From 8103a79c348f8736a90e3f4903e05ef36c3bf413 Mon Sep 17 00:00:00 2001 From: Young Hahn Date: Wed, 25 Jan 2012 16:59:00 -0500 Subject: [PATCH 1/3] Add IF NOT EXISTS to index creation. --- bin/mbrekey | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/mbrekey b/bin/mbrekey index 65129c4..5db75f9 100755 --- a/bin/mbrekey +++ b/bin/mbrekey @@ -32,7 +32,7 @@ db.all("SELECT tbl_name FROM sqlite_master WHERE TYPE = 'table'", function(err, var tileQueue = new utils.Queue(changeTileID, 1); var gridQueue = new utils.Queue(changeGridID, 1); -db.run('CREATE INDEX "temp_tile_id_idx" ON "map" ("tile_id")', function(err) { +db.run('CREATE INDEX IF NOT EXISTS "temp_tile_id_idx" ON "map" ("tile_id")', function(err) { if (err) throw err; console.warn('Created temporary index.'); db.run('CREATE TEMP TABLE "tile_hash_id" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "hash" TEXT UNIQUE NOT NULL)', function(err) { From 48ccde7cfd4ac8bb3986b13851bbcde818336eba Mon Sep 17 00:00:00 2001 From: Young Hahn Date: Wed, 25 Jan 2012 17:48:55 -0500 Subject: [PATCH 2/3] Use prepared statements. --- bin/mbrekey | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/bin/mbrekey b/bin/mbrekey index 5db75f9..9f8b404 100755 --- a/bin/mbrekey +++ b/bin/mbrekey @@ -86,10 +86,12 @@ function changeTileID(start, done) { if (err) throw err; db.serialize(function() { db.run('BEGIN'); - rows.forEach(function(row) { - db.run('UPDATE images SET tile_id = ? WHERE tile_id = ?', row.id, row.hash); - db.run('UPDATE map SET tile_id = ? WHERE tile_id = ?', row.id, row.hash); - }); + var st1 = db.prepare('UPDATE images SET tile_id = ? WHERE tile_id = ?'); + var st2 = db.prepare('UPDATE map SET tile_id = ? WHERE tile_id = ?'); + for (var i = 0; i < rows.length; i++) { + st1.run(rows[i].id, rows[i].hash); + st2.run(rows[i].id, rows[i].hash); + } db.run('COMMIT', function(err) { if (err) throw err; changedTiles += rows.length; From 63218d4ebe5be022cee34411a93b73f14f5008f6 Mon Sep 17 00:00:00 2001 From: Young Hahn Date: Wed, 25 Jan 2012 18:57:01 -0500 Subject: [PATCH 3/3] Finalize statements and vacuum when complete. --- bin/mbrekey | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/bin/mbrekey b/bin/mbrekey index 9f8b404..6e5ee3f 100755 --- a/bin/mbrekey +++ b/bin/mbrekey @@ -94,9 +94,12 @@ function changeTileID(start, done) { } db.run('COMMIT', function(err) { if (err) throw err; - changedTiles += rows.length; - console.warn('Updated %d tiles.', changedTiles); - done(); + st1.finalize(function(err) { + st2.finalize(function(err) { + changedTiles += rows.length; + console.warn('Updated %d tiles.', changedTiles); + done(); + })}); }); }); }); @@ -125,5 +128,12 @@ function changeGridID(start, done) { }; function deleteTempKey() { - db.run('DROP INDEX "temp_tile_id_idx"'); + db.run('DROP INDEX "temp_tile_id_idx"', function(err) { + if (err) throw err; + console.warn('Vacuuming...'); + db.run('VACUUM;', function(err) { + if (err) throw err; + db.close(); + }); + }); }