use strict;
use Test::More tests => 5;
BEGIN{
use_ok('DBIx::Connection');
}
SKIP: {
skip('missing env varaibles DB_TEST_CONNECTION, DB_TEST_USERNAME DB_TEST_PASSWORD', 4)
unless $ENV{DB_TEST_CONNECTION};
my $connection = DBIx::Connection->new(
name => 'my_connection_name',
dsn => $ENV{DB_TEST_CONNECTION},
username => $ENV{DB_TEST_USERNAME},
password => $ENV{DB_TEST_PASSWORD},
);
my $table_not_exists = 1;
eval {
$connection->record("SELECT id FROM lob_test");
$table_not_exists = 0;
};
SKIP: {
if ($table_not_exists) {
my %table = ();
$table{Oracle} = 'CREATE TABLE lob_test(id NUMBER, name VARCHAR2(100), doc_size NUMBER, blob_content BLOB)';
$table{PostgreSQL} = 'CREATE TABLE lob_test(id NUMERIC, name VARCHAR(100), doc_size NUMERIC, blob_content oid)';
$table{MySQL} = 'CREATE TABLE lob_test(id NUMERIC, name VARCHAR(100), doc_size NUMERIC, blob_content LONGBLOB)';
print "\n#missing test table " . $table{$connection->dbms_name};
skip('missing table', 4);
}
$connection->do("DELETE FROM lob_test");
$connection->do("INSERT INTO lob_test(id, name) VALUES(1, 'test 1')");
$connection->do("INSERT INTO lob_test(id, name) VALUES(2, 'test 2')");
$connection->do("INSERT INTO lob_test(id, name) VALUES(3, 'test 3')");
my $lob_content = 'AB' . ((chr(1) . chr(3) . chr(10)) x (1024 * 31)) . chr(2);
eval {
$connection->update_lob(lob_test => 'blob_content', $lob_content, {id => 1}, 'doc_size');
};
ok(! $@, 'should update lob');
{
my $lob = $connection->fetch_lob(lob_test => 'blob_content', {id => 1}, 'doc_size');
is($lob, $lob_content, 'should fetch lob content');
}
eval {
$connection->update_lob(
lob_test => 'blob_content',
('Z'. $lob_content . $lob_content),
{id => 1},
'doc_size'
);
};
ok(! $@, 'should update lob');
{
my $lob = $connection->fetch_lob(lob_test => 'blob_content', {id => 1}, 'doc_size');
is($lob, ('Z'. $lob_content . $lob_content), 'should fetch lob content');
}
}
}