'SELECT * FROM foo WHERE a IN (3,2,1)',
]
},
+
+ # list consistency
+ {
+ equal => 0,
+ statements => [
+ 'SELECT a,b FROM foo',
+ 'SELECT a,,b FROM foo',
+ 'SELECT a,b, FROM foo',
+ 'SELECT ,a,b, FROM foo',
+ 'SELECT ,a,,b, FROM foo',
+ ],
+ },
+
+ # misc func
{
equal => 0,
statements => [
'SELECT count(1) FROM foo',
]
},
- # misc func
{
equal => 1,
statements => [
'SELECT foo FROM bar ()',
]
},
- # single ? of unknown funcs can unroll
- # (think ...LIKE ?...)
{
- equal => 1,
+ equal => 0,
statements => [
- 'SELECT foo FROM bar WHERE bar > foo ?',
- 'SELECT foo FROM bar WHERE bar > foo (?)',
- 'SELECT foo FROM bar WHERE bar > foo( ? )',
+ 'SELECT COUNT * FROM foo',
+ 'SELECT COUNT( * ) FROM foo',
]
},
+ # single ? of unknown funcs do not unroll unless
+ # explicitly allowed (e.g. Like)
{
- equal => 1,
+ equal => 0,
statements => [
- 'SELECT foo FROM bar WHERE bar > (foo ?)',
- 'SELECT foo FROM bar WHERE bar > (foo( ? ))',
- 'SELECT foo FROM bar WHERE bar > (( foo (?) ))',
+ 'SELECT foo FROM bar WHERE bar > foo ?',
+ 'SELECT foo FROM bar WHERE bar > foo( ? )',
]
},
{
equal => 1,
statements => [
- 'SELECT foo FROM bar WHERE bar foo ?',
- 'SELECT foo FROM bar WHERE bar foo (?)',
- 'SELECT foo FROM bar WHERE bar foo( (?))',
+ 'SELECT foo FROM bar WHERE bar LIKE ?',
+ 'SELECT foo FROM bar WHERE bar LiKe (?)',
+ 'SELECT foo FROM bar WHERE bar lIkE( (?))',
]
},
- # not so about multival
+ # test multival
{
equal => 0,
statements => [
'SELECT * FROM foo WHERE bar = (baz( buzz ))',
]
},
+ # oddballs
+ {
+ equal => 1,
+ statements => [
+ 'WHERE ( foo GLOB ? )',
+ 'WHERE foo GLOB ?',
+ ],
+ },
+ {
+ equal => 1,
+ statements => [
+ 'SELECT FIRST ? SKIP ? [me].[id], [me].[owner]
+ FROM [books] [me]
+ WHERE ( ( (EXISTS (
+ SELECT FIRST ? SKIP ? [owner].[id]
+ FROM [owners] [owner]
+ WHERE ( [books].[owner] = [owner].[id] )
+ )) AND [source] = ? ) )',
+ 'SELECT FIRST ? SKIP ? [me].[id], [me].[owner]
+ FROM [books] [me]
+ WHERE ( ( EXISTS (
+ SELECT FIRST ? SKIP ? [owner].[id]
+ FROM [owners] [owner]
+ WHERE ( [books].[owner] = [owner].[id] )
+ ) AND [source] = ? ) )',
+ ],
+ },
);
my @bind_tests = (
map { scalar @{$_->{bindvals}} }
@bind_tests
) +
- 3;
+ 9;
use_ok('SQL::Abstract::Test', import => [qw(
eq_sql_bind eq_sql eq_bind is_same_sql_bind
),
"eq_sql_bind considers different SQL expressions and equal bind values different"
);
+
+# test diag string
+ok (! eq_sql (
+ 'SELECT owner_name FROM books me WHERE ( source = ? )',
+ 'SELECT owner_name FROM books me WHERE ( sUOrce = ? )',
+));
+like(
+ $SQL::Abstract::Test::sql_differ,
+ qr/\Q[ source ] != [ sUOrce ]/,
+ 'expected debug of literal diff',
+);
+
+ok (! eq_sql (
+ 'SELECT owner_name FROM books me ORDER BY owner_name',
+ 'SELECT owner_name FROM books me GROUP BY owner_name',
+));
+like(
+ $SQL::Abstract::Test::sql_differ,
+ qr/\QOP [ORDER BY] != [GROUP BY]/,
+ 'expected debug of op diff',
+);
+
+ok (! eq_sql (
+ 'SELECT owner_name FROM books WHERE ( source = ? )',
+ 'SELECT owner_name FROM books'
+));
+
+like(
+ $SQL::Abstract::Test::sql_differ,
+ qr|\Q[WHERE source = ?] != [N/A]|,
+ 'expected debug of missing branch',
+);
+