no
warnings
'once'
;
BEGIN {
delete
@ENV
{
qw(DBIC_TRACE DBIC_TRACE_PROFILE DBICTEST_SQLITE_USE_FILE)
} }
my
$schema
= DBICTest->init_schema();
my
$lfn
= file(
"t/var/sql-$$.log"
);
unlink
$lfn
or
die
$!
if
-e
$lfn
;
$schema
->storage->debugobj(DBIx::Class::Storage::Statistics->new);
ok (
$schema
->storage->debug(1),
'debug'
);
$schema
->storage->debugfh(
$lfn
->openw);
$schema
->storage->debugfh->autoflush(1);
$schema
->resultset(
'CD'
)->count;
my
@loglines
=
$lfn
->slurp;
is (
@loglines
, 1,
'one line of log'
);
like(
$loglines
[0],
qr/^SELECT COUNT/
,
'File log via debugfh success'
);
$schema
->storage->debugfh(
undef
);
{
local
$ENV
{DBIC_TRACE} =
"=$lfn"
;
unlink
$lfn
;
$schema
->resultset(
'CD'
)->count;
my
$schema2
= DBICTest->init_schema(
no_deploy
=> 1);
$schema2
->storage->_do_query(
'SELECT 1'
);
my
@loglines
=
$lfn
->slurp;
is(
@loglines
, 2,
'2 lines of log'
);
like(
$loglines
[0],
qr/^SELECT COUNT/
,
'Env log from schema1 success'
);
like(
$loglines
[1],
qr/^SELECT 1:/
,
'Env log from schema2 success'
);
$schema
->storage->debugobj->debugfh(
undef
)
}
END {
unlink
$lfn
;
}
open
(STDERRCOPY,
'>&STDERR'
);
close
(STDERR);
dies_ok {
$schema
->resultset(
'CD'
)->search({})->count;
}
'Died on closed FH'
;
open
(STDERR,
'>&STDERRCOPY'
);
{
my
(
$sql
,
@bind
);
$schema
->storage->debugobj(DBIC::DebugObj->new(\
$sql
, \
@bind
));
my
@cds
=
$schema
->resultset(
'CD'
)->search( {
artist
=> 1,
cdid
=> {
-between
=> [ 1, 3 ] }, } );
is_same_sql_bind(
$sql
, \
@bind
,
"SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track FROM cd me WHERE ( artist = ? AND (cdid BETWEEN ? AND ?) )"
,
[
qw/'1' '1' '3'/
],
'got correct SQL with all bind parameters (debugcb)'
);
@cds
=
$schema
->resultset(
'CD'
)->search( {
artist
=> 1,
cdid
=> {
-between
=> [ 1, 3 ] }, } );
is_same_sql_bind(
$sql
, \
@bind
,
"SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track FROM cd me WHERE ( artist = ? AND (cdid BETWEEN ? AND ?) )"
, [
"'1'"
,
"'1'"
,
"'3'"
],
'got correct SQL with all bind parameters (debugobj)'
);
}
done_testing;