OOPS
view release on metacpan or search on metacpan
lib/OOPS/OOPS1004/sqlite_v3.pm view on Meta::CPAN
#
# This handles DBD::SQLite 1.x which uses SQLite 3.x
#
package OOPS::OOPS1004::sqlite_v3;
@ISA = qw(OOPS::OOPS1004 Exporter);
@EXPORT = qw(
tabledefs
table_list
db_initial_values
initial_query_set
$big_blob_size
$retry_count
);
use strict;
use warnings;
use Carp qw(confess);
our $big_blob_size = 900*1024;
sub initialize
{
my $oops = shift;
my $dbh = $oops->{dbh};
$dbh->{sqlite_handle_binary_nulls} = 1;
#
# SQLite will sometimes error out with a locked database
# error when it should have just waited instead. Oh well.
#
# http://rt.cpan.org/Ticket/Display.html?id=11680
#
$dbh->func(10_000, 'busy_timeout');
if ($oops->{args}{default_synchronous} || $ENV{OOPS_SYNC}) {
my $sm = $dbh->prepare("PRAGMA default_synchronous = $oops->{args}{default_synchronous};") || confess $dbh->errstr;
$sm->execute || confess $sm->errstr;
}
#my $tmode = $dbh->prepare('END TRANSACTION; BEGIN TRANSACTION ON CONFLICT ROLLBACK') || confess;
#$tmode->execute() || die $tmode->errstr;
}
# subroutine
sub tabledefs
{
my $x = <<'END';
CREATE TABLE TP_object (
id INTEGER PRIMARY KEY,
loadgroup BIGINT,
class VARCHAR(255), # ref($object)
otype CHAR(1), # 'S'calar/ref, 'A'rray, 'H'ash
virtual CHAR(1), # load virutal ('V' or '0')
reftarg CHAR(1), # reference target ('T' or '0')
rfe CHAR(1), # reserved for future expansion
alen INT, # array length
refs INT, # references
counter SMALLINT
);
CREATE INDEX TP_group_index ON TP_object (loadgroup);
CREATE TABLE TP_attribute (
id BIGINT NOT NULL,
pkey VARCHAR(128) NOT NULL,
pval VARCHAR(255),
ptype VARCHAR(1), # type '0'-normal or 'R'eference 'B'ig
PRIMARY KEY (id, pkey));
CREATE INDEX TP_value_index ON TP_attribute (pval);
CREATE TABLE TP_big (
id BIGINT NOT NULL,
pkey VARCHAR(128) NOT NULL,
fragno INT,
pval TEXT,
PRIMARY KEY (id, pkey, fragno));
END
$x =~ s/#.*//mg;
return $x;
}
sub lock
{
return 1;
}
# subroutine
sub table_list
{
( run in 0.852 second using v1.01-cache-2.11-cpan-39bf76dae61 )