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