MogileFS-Server
view release on metacpan or search on metacpan
lib/MogileFS/Store/SQLite.pm view on Meta::CPAN
evcode CHAR(4),
devid MEDIUMINT UNSIGNED
)"
}
sub INDEXES_file_on {
("CREATE INDEX devid ON file_on (devid)");
}
sub INDEXES_device {
("CREATE INDEX status ON device (status)");
}
sub INDEXES_file_to_replicate {
("CREATE INDEX nexttry ON file_to_replicate (nexttry)");
}
sub INDEXES_file_to_delete_later {
("CREATE INDEX delafter ON file_to_delete_later (delafter)");
}
sub INDEXES_fsck_log {
("CREATE INDEX utime ON fsck_log (utime)");
}
sub INDEXES_file_to_queue {
("CREATE INDEX type_nexttry ON file_to_queue (type,nexttry)");
}
sub INDEXES_file_to_delete2 {
("CREATE INDEX file_to_delete2_nexttry ON file_to_delete2 (nexttry)");
}
# Extra table
sub TABLE_lock {
"CREATE TABLE lock (
lockid INT UNSIGNED NOT NULL PRIMARY KEY,
hostname VARCHAR(255) NOT NULL,
pid INT UNSIGNED NOT NULL,
acquiredat INT UNSIGNED NOT NULL
)"
}
sub filter_create_sql {
my ($self, $sql) = @_;
$sql =~ s/\bENUM\(.+?\)/TEXT/g;
my ($table) = $sql =~ /create\s+table\s+(\S+)/i;
die "didn't find table" unless $table;
if ($self->can("INDEXES_$table")) {
$sql =~ s!,\s+INDEX\s+(\w+\s+)?\(.+?\)!!mg;
}
return $sql;
}
# eh. this is really atomic at all, but a) this is a demo db module,
# nobody should use SQLite in production, b) this method is going
# away, c) everything in SQLite is pretty atomic anyway with the
# db-level locks, d) the devcount field is no longer used. so i'm not
# caring much about doing this correctly.
sub update_devcount_atomic {
my ($self, $fidid) = @_;
$self->update_devcount($fidid);
}
# SQLite is just for testing, so don't upgrade
sub upgrade_add_device_drain {
return 1;
}
sub upgrade_modify_server_settings_value { 1 }
sub upgrade_add_file_to_queue_arg { 1 }
sub upgrade_modify_device_size { 1 }
sub upgrade_add_host_readonly { 1 }
sub BLOB_BIND_TYPE { SQL_BLOB }
sub get_keys_like_operator {
my $self = shift;
my $bool = MogileFS::Config->server_setting_cached('case_sensitive_list_keys');
# this is a dbh-wide change, but this is the only place we use LIKE
$self->dbh->do("PRAGMA case_sensitive_like = " . ($bool ? "ON" : "OFF"));
return "LIKE";
}
1;
__END__
=head1 NAME
MogileFS::Store::SQLite - For-testing-only not-for-production SQLite storage for MogileFS
=head1 SEE ALSO
L<MogileFS::Store>
( run in 2.041 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )