+BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
+
use strict;
use warnings;
use Test::More;
-use lib qw(t/lib);
+
+use DBIx::Class::_Util 'dump_value';
use DBICTest ':DiffSQL';
use SQL::Abstract qw(is_plain_value is_literal_value);
use List::Util 'shuffle';
-use Data::Dumper;
-$Data::Dumper::Terse = 1;
-$Data::Dumper::Useqq = 1;
$Data::Dumper::Indent = 0;
my $schema = DBICTest->init_schema();
my $bare_cond = is_literal_value($c->{cond}) ? { '=', $c->{cond} } : $c->{cond};
my @query_steps = (
- # this is a monkey-wrench, always there
+ # these are monkey-wrenches, always there
{ title => { '!=', [ -and => \'bar' ] }, year => { '!=', [ -and => 'bar' ] } },
+ { -or => [ genreid => undef, genreid => { '!=' => \42 } ] },
+ { -or => [ genreid => undef, genreid => { '!=' => \42 } ] },
{ title => $bare_cond, year => { '=', $c->{cond} } },
{ -and => [ year => $bare_cond, { title => { '=', $c->{cond} } } ] },
if (my $v = is_plain_value($c->{cond})) {
push @query_steps,
- { year => $v->[0] },
- { title => $v->[0] },
- { -and => [ year => $v->[0], title => $v->[0] ] },
+ { year => $$v },
+ { title => $$v },
+ { -and => [ year => $$v, title => $$v ] },
;
}
"(
SELECT me.title
FROM cd me
- WHERE title != bar AND title $c->{sql} AND year != ? AND year $c->{sql}
+ WHERE
+ ( genreid IS NULL OR genreid != 42 )
+ AND
+ title != bar
+ AND
+ title $c->{sql}
+ AND
+ year != ?
+ AND
+ year $c->{sql}
)",
\@bind,
- 'Double condition correctly collapsed for steps' . Dumper \@query_steps,
+ 'Double condition correctly collapsed for steps:' . join( '', map { "\n\t" . dump_value($_) } @query_steps ),
);
}