aboutsummaryrefslogtreecommitdiff
path: root/perl/lib
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2011-11-16 11:37:40 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2011-11-16 11:37:40 +0000
commita5952405d2803ae0d29955fe6725cd9195327a07 (patch)
tree5c528389297d47c2a09ada0444a19310b39c0ca2 /perl/lib
parentc0b706213dad330bd51607ff73059c87f0ec5b93 (diff)
* Re-use prepared statements across insertions into the manifest cache
DB. This speeds up creating the cache from 16.1s to 7.9s on my system.
Diffstat (limited to 'perl/lib')
-rw-r--r--perl/lib/Nix/Manifest.pm20
1 files changed, 12 insertions, 8 deletions
diff --git a/perl/lib/Nix/Manifest.pm b/perl/lib/Nix/Manifest.pm
index 7790cfe3b..f042e1f88 100644
--- a/perl/lib/Nix/Manifest.pm
+++ b/perl/lib/Nix/Manifest.pm
@@ -286,6 +286,14 @@ EOF
open MAINLOCK, ">>$lockFile" or die "unable to acquire lock ‘$lockFile’: $!\n";
flock(MAINLOCK, LOCK_EX) or die;
+ our $insertNAR = $dbh->prepare(
+ "insert into NARs(manifest, storePath, url, hash, size, narHash, " .
+ "narSize, refs, deriver, system) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") or die;
+
+ our $insertPatch = $dbh->prepare(
+ "insert into Patches(manifest, storePath, basePath, baseHash, url, hash, " .
+ "size, narHash, narSize, patchType) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
+
$dbh->begin_work;
# Read each manifest in $manifestDir and add it to the database,
@@ -312,20 +320,16 @@ EOF
sub addNARToDB {
my ($storePath, $narFile) = @_;
- $dbh->do(
- "insert into NARs(manifest, storePath, url, hash, size, narHash, " .
- "narSize, refs, deriver, system) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
- {}, $id, $storePath, $narFile->{url}, $narFile->{hash}, $narFile->{size},
+ $insertNAR->execute(
+ $id, $storePath, $narFile->{url}, $narFile->{hash}, $narFile->{size},
$narFile->{narHash}, $narFile->{narSize}, $narFile->{references},
$narFile->{deriver}, $narFile->{system});
};
sub addPatchToDB {
my ($storePath, $patch) = @_;
- $dbh->do(
- "insert into Patches(manifest, storePath, basePath, baseHash, url, hash, " .
- "size, narHash, narSize, patchType) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
- {}, $id, $storePath, $patch->{basePath}, $patch->{baseHash}, $patch->{url},
+ $insertPatch->execute(
+ $id, $storePath, $patch->{basePath}, $patch->{baseHash}, $patch->{url},
$patch->{hash}, $patch->{size}, $patch->{narHash}, $patch->{narSize},
$patch->{patchType});
};