db: fix bug handling ':' character
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 15 Mar 2013 20:02:31 +0000 (15 23:02 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Fri, 15 Mar 2013 20:02:31 +0000 (15 23:02 +0300)
There was a bug here where if you tried to enter something with a colon
it messed up.  This is a problem for some of my unreleased code.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch_data/db/fill_db_caller_info.pl
smatch_data/db/fill_db_sql.pl

index 131eab4..dbbdee0 100755 (executable)
@@ -64,7 +64,7 @@ while (<WARNS>) {
         next;
     }
 
-    ($dummy, $dummy, $sql) = split(/:/);
+    ($dummy, $dummy, $sql) = split(/:/, $_, 3);
 
     $sql =~ s/%CALL_ID%/$call_id/;
     if ($sql =~ /%call_marker%/) {
index 4b0ed33..92877a8 100755 (executable)
@@ -14,6 +14,9 @@ my $db = DBI->connect("dbi:SQLite:smatch_db.sqlite", "", "", {AutoCommit => 0});
 $db->do("PRAGMA synchronous = OFF");
 $db->do("PRAGMA cache_size = 800000");
 $db->do("PRAGMA journal_mode = OFF");
+$db->do("PRAGMA count_changes = OFF");
+$db->do("PRAGMA temp_store = MEMORY");
+$db->do("PRAGMA locking = EXCLUSIVE");
 
 my ($dummy, $sql);
 
@@ -23,7 +26,7 @@ while (<WARNS>) {
     if (!($_ =~ /^.*? [^ ]*\(\) SQL: /)) {
         next;
     }
-    ($dummy, $dummy, $sql) = split(/:/);
+    ($dummy, $dummy, $sql) = split(/:/, $_, 3);
 
     $db->do($sql);
 }