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'
);
}
}
}