11f5207b7SJohn Levon#!/usr/bin/perl -w
21f5207b7SJohn Levon
31f5207b7SJohn Levonuse strict;
41f5207b7SJohn Levonuse DBI;
51f5207b7SJohn Levon
61f5207b7SJohn Levonmy $project = shift;
71f5207b7SJohn Levonmy $warns = shift;
81f5207b7SJohn Levonmy $db_file = shift;
91f5207b7SJohn Levon
10*c85f09ccSJohn Levonif (!defined($db_file)) {
111f5207b7SJohn Levon    print "usage:  $0 <-p=project> <smatch_warns.txt> <db_file>\n";
121f5207b7SJohn Levon    exit(1);
131f5207b7SJohn Levon}
141f5207b7SJohn Levon
151f5207b7SJohn Levonmy $db = DBI->connect("dbi:SQLite:$db_file", "", "", {AutoCommit => 0});
161f5207b7SJohn Levon$db->do("PRAGMA cache_size = 800000");
171f5207b7SJohn Levon$db->do("PRAGMA journal_mode = OFF");
181f5207b7SJohn Levon$db->do("PRAGMA count_changes = OFF");
191f5207b7SJohn Levon$db->do("PRAGMA temp_store = MEMORY");
201f5207b7SJohn Levon$db->do("PRAGMA locking = EXCLUSIVE");
211f5207b7SJohn Levon
221f5207b7SJohn Levonmy ($dummy, $sql);
231f5207b7SJohn Levon
241f5207b7SJohn Levonopen(WARNS, "<$warns");
251f5207b7SJohn Levonwhile (<WARNS>) {
261f5207b7SJohn Levon
271f5207b7SJohn Levon    if (!($_ =~ /^.*? [^ ]*\(\) SQL: /)) {
281f5207b7SJohn Levon        next;
291f5207b7SJohn Levon    }
301f5207b7SJohn Levon    ($dummy, $dummy, $sql) = split(/:/, $_, 3);
311f5207b7SJohn Levon
321f5207b7SJohn Levon    $db->do($sql);
331f5207b7SJohn Levon}
341f5207b7SJohn Levonclose(WARNS);
351f5207b7SJohn Levon
361f5207b7SJohn Levonopen(WARNS, "<$warns");
371f5207b7SJohn Levonwhile (<WARNS>) {
381f5207b7SJohn Levon
391f5207b7SJohn Levon    if (!($_ =~ /^.*? [^ ]*\(\) SQL_late: /)) {
401f5207b7SJohn Levon        next;
411f5207b7SJohn Levon    }
421f5207b7SJohn Levon    ($dummy, $dummy, $sql) = split(/:/, $_, 3);
431f5207b7SJohn Levon
441f5207b7SJohn Levon    $db->do($sql);
451f5207b7SJohn Levon}
461f5207b7SJohn Levonclose(WARNS);
471f5207b7SJohn Levon
481f5207b7SJohn Levon$db->commit();
491f5207b7SJohn Levon$db->disconnect();
50