Database-Abstraction
view release on metacpan or search on metacpan
lib/Database/Abstraction.pm view on Meta::CPAN
$self->{'password'},
{ RaiseError => 1, AutoCommit => 1 },
) or Carp::croak(ref($self), ": cannot connect: $DBI::errstr");
if($dialect eq 'sqlite') {
$dbh->do('PRAGMA synchronous = OFF');
$dbh->do('PRAGMA cache_size = -4096');
$dbh->do('PRAGMA journal_mode = OFF');
$dbh->do('PRAGMA temp_store = MEMORY');
$dbh->do('PRAGMA mmap_size = 1048576');
$dbh->sqlite_busy_timeout(100000);
}
$self->{'type'} = 'DBI';
$self->{$table} = $dbh;
$self->{'_updated'} = time();
return $self;
}
my $dir = Cwd::abs_path($self->{'directory'} || $defaults{'directory'});
my $dbname = $self->{'dbname'} || $defaults{'dbname'} || $table;
lib/Database/Abstraction.pm view on Meta::CPAN
$dbh = DBI->connect("dbi:SQLite:dbname=$slurp_file", undef, undef, {
sqlite_open_flags => DBD::SQLite::Constants::SQLITE_OPEN_READONLY(),
});
}
if($dbh) {
$dbh->do('PRAGMA synchronous = OFF');
$dbh->do('PRAGMA cache_size = -4096'); # Use 4MB cache - negative = KB)
$dbh->do('PRAGMA journal_mode = OFF'); # Read-only, no journal needed
$dbh->do('PRAGMA temp_store = MEMORY'); # Store temp data in RAM
$dbh->do('PRAGMA mmap_size = 1048576'); # Use 1MB memory-mapped I/O
$dbh->sqlite_busy_timeout(100000); # 10s
$self->_debug("read in $table from SQLite $slurp_file");
$self->{'type'} = 'DBI';
} elsif($self->_is_berkeley_db(File::Spec->catfile($dir, "$dbname.db"))) {
$self->_debug("$table is a BerkeleyDB file");
$self->{'type'} = 'BerkeleyDB';
} else {
my $fin;
# File::pfopen splits $path on ':' which breaks Windows drive letters
# (C:\foo becomes ['C', '\foo']). Since we always have a single directory
# we use File::Spec->catfile directly â same behaviour, portable.
( run in 0.585 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )