1#!/usr/bin/perl -w
2
3use strict;
4use DBI;
5
6my $project = shift;
7my $warns = shift;
8my $db_file = shift;
9
10if (!defined($db_file)) {
11    print "usage:  $0 <-p=project> <smatch_warns.txt> <db_file>\n";
12    exit(1);
13}
14
15my $db = DBI->connect("dbi:SQLite:$db_file", "", "", {AutoCommit => 0});
16$db->do("PRAGMA cache_size = 800000");
17$db->do("PRAGMA journal_mode = OFF");
18$db->do("PRAGMA count_changes = OFF");
19$db->do("PRAGMA temp_store = MEMORY");
20$db->do("PRAGMA locking = EXCLUSIVE");
21
22my ($dummy, $sql);
23
24open(WARNS, "<$warns");
25while (<WARNS>) {
26
27    if (!($_ =~ /^.*? [^ ]*\(\) SQL: /)) {
28        next;
29    }
30    ($dummy, $dummy, $sql) = split(/:/, $_, 3);
31
32    $db->do($sql);
33}
34close(WARNS);
35
36open(WARNS, "<$warns");
37while (<WARNS>) {
38
39    if (!($_ =~ /^.*? [^ ]*\(\) SQL_late: /)) {
40        next;
41    }
42    ($dummy, $dummy, $sql) = split(/:/, $_, 3);
43
44    $db->do($sql);
45}
46close(WARNS);
47
48$db->commit();
49$db->disconnect();
50