#
#################
-
my @tests = (
{
func => 'select',
func => 'update',
new => {bindtype => 'columns'},
args => ['test', {a => 1, b => \["to_date(?, 'MM/DD/YY')", [{dummy => 1} => '02/02/02']], c => { -lower => 'foo' }}, {a => {'between', [1,2]}}],
+ stmt => "UPDATE test SET a = ?, b = to_date(?, 'MM/DD/YY'), c = LOWER(?) WHERE ( a BETWEEN ? AND ? )",
+ stmt_q => "UPDATE `test` SET `a` = ?, `b` = to_date(?, 'MM/DD/YY'), `c` = LOWER(?) WHERE ( `a` BETWEEN ? AND ? )",
+ bind => [[a => '1'], [{dummy => 1} => '02/02/02'], [c => 'foo'], [a => '1'], [a => '2']],
+ },
+ {
+ func => 'update',
+ new => {bindtype => 'columns',restore_old_unop_handling => 1},
+ args => ['test', {a => 1, b => \["to_date(?, 'MM/DD/YY')", [{dummy => 1} => '02/02/02']], c => { -lower => 'foo' }}, {a => {'between', [1,2]}}],
stmt => "UPDATE test SET a = ?, b = to_date(?, 'MM/DD/YY'), c = LOWER ? WHERE ( a BETWEEN ? AND ? )",
stmt_q => "UPDATE `test` SET `a` = ?, `b` = to_date(?, 'MM/DD/YY'), `c` = LOWER ? WHERE ( `a` BETWEEN ? AND ? )",
bind => [[a => '1'], [{dummy => 1} => '02/02/02'], [c => 'foo'], [a => '1'], [a => '2']],
func => 'select',
new => {bindtype => 'columns'},
args => ['test', '*', [ Y => { '=' => { -max => { -LENGTH => { -min => 'x' } } } } ] ],
+ stmt => 'SELECT * FROM test WHERE ( Y = ( MAX( LENGTH( MIN(?) ) ) ) )',
+ stmt_q => 'SELECT * FROM `test` WHERE ( `Y` = ( MAX( LENGTH( MIN(?) ) ) ) )',
+ bind => [[Y => 'x']],
+ },
+ {
+ func => 'select',
+ new => {bindtype => 'columns',restore_old_unop_handling => 1},
+ args => ['test', '*', [ Y => { '=' => { -max => { -LENGTH => { -min => 'x' } } } } ] ],
stmt => 'SELECT * FROM test WHERE ( Y = ( MAX( LENGTH( MIN ? ) ) ) )',
stmt_q => 'SELECT * FROM `test` WHERE ( `Y` = ( MAX( LENGTH( MIN ? ) ) ) )',
bind => [[Y => 'x']],
stmt_q => 'DELETE FROM `test` WHERE ( `requestor` IS NULL ) RETURNING `id`, `created_at`',
bind => []
},
+ {
+ func => 'delete',
+ args => ['test', \[ undef ] ],
+ stmt => 'DELETE FROM test',
+ stmt_q => 'DELETE FROM `test`',
+ bind => []
+ },
);
# check is( not) => undef
}
else {
lives_ok(sub {
+ alarm(1); local $SIG{ALRM} = sub {
+ no warnings 'redefine';
+ my $orig = Carp->can('caller_info');
+ local *Carp::caller_info = sub { return if $_[0] > 20; &$orig };
+ print STDERR "ARGH ($SQL::Abstract::Default_Scalar_To): ".Carp::longmess();
+ die "timed out";
+ };
warnings_like(
sub { $cref->() },
$t->{warns} || [],