$Data::Dumper::Terse = 1;
$Data::Dumper::Sortkeys = 1;
-# equivalent to $Module::Install::AUTHOR
-my $author = (
- ( not -d './inc' )
- or
- ( -e ($^O eq 'VMS' ? './inc/_author' : './inc/.author') )
-);
-
-if (not $author and not $ENV{SQLATEST_TESTER} and not $ENV{AUTOMATED_TESTING}) {
- plan skip_all => 'Skipping resource intensive self-tests, use SQLATEST_TESTER=1 to run';
-}
-
my @sql_tests = (
# WHERE condition - equal
{
]
},
+ # IS NULL (special LHS-only op)
+ {
+ equal => 1,
+ statements => [
+ q/WHERE a IS NOT NULL AND b IS NULL/,
+ q/WHERE (a IS NOT NULL) AND b IS NULL/,
+ q/WHERE a IS NOT NULL AND (b IS NULL)/,
+ q/WHERE (a IS NOT NULL) AND ((b IS NULL))/,
+ ],
+ },
+
# JOIN condition - equal
{
equal => 1,
'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',
]
},
- # func
{
equal => 1,
statements => [
'SELECT foo FROM bar ()',
]
},
+ {
+ equal => 0,
+ statements => [
+ 'SELECT COUNT * FROM foo',
+ 'SELECT COUNT( * ) FROM foo',
+ ]
+ },
+ # single ? of unknown funcs do not unroll unless
+ # explicitly allowed (e.g. Like)
+ {
+ equal => 0,
+ statements => [
+ 'SELECT foo FROM bar WHERE bar > foo ?',
+ 'SELECT foo FROM bar WHERE bar > foo( ? )',
+ ]
+ },
+ {
+ equal => 1,
+ statements => [
+ 'SELECT foo FROM bar WHERE bar LIKE ?',
+ 'SELECT foo FROM bar WHERE bar LiKe (?)',
+ 'SELECT foo FROM bar WHERE bar lIkE( (?))',
+ ]
+ },
+ # test multival
+ {
+ equal => 0,
+ statements => [
+ 'SELECT foo FROM bar WHERE foo IN (?, ?)',
+ 'SELECT foo FROM bar WHERE foo IN ?, ?',
+ ]
+ },
# math
{
equal => 0,
if ($equal ^ $test->{equal}) {
my ($ast1, $ast2) = map { SQL::Abstract::Test::parse ($_) } ($sql1, $sql2);
-
$_ = Dumper $_ for ($ast1, $ast2);
- diag("sql1: $sql1");
- diag("sql2: $sql2");
- note("ast1: $ast1");
- note("ast2: $ast2");
+ diag "sql1: $sql1";
+ diag "sql2: $sql2";
+ note $SQL::Abstract::Test::sql_differ;
+ note "ast1: $ast1";
+ note "ast2: $ast2";
}
}
}