helper: fix segfault parsing invalid code
[smatch.git] / smatch_data / db / fill_db_sql.pl
blob68a4c3161352338d66301c8332f84e28b5755595
1 #!/usr/bin/perl -w
3 use strict;
4 use DBI;
6 my $project = shift;
7 my $warns = shift;
8 my $db_file = shift;
10 if (!defined($warns)) {
11 print "usage: $0 <-p=project> <smatch_warns.txt> <db_file>\n";
12 exit(1);
15 my $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");
22 my ($dummy, $sql);
24 open(WARNS, "<$warns");
25 while (<WARNS>) {
27 if (!($_ =~ /^.*? [^ ]*\(\) SQL: /)) {
28 next;
30 ($dummy, $dummy, $sql) = split(/:/, $_, 3);
32 $db->do($sql);
34 close(WARNS);
36 open(WARNS, "<$warns");
37 while (<WARNS>) {
39 if (!($_ =~ /^.*? [^ ]*\(\) SQL_late: /)) {
40 next;
42 ($dummy, $dummy, $sql) = split(/:/, $_, 3);
44 $db->do($sql);
46 close(WARNS);
48 $db->commit();
49 $db->disconnect();