restore _order_by exception on nonsense asc+desc input
[scpubgit/Q-Branch.git] / t / 05in_between.t
index fc3aa1d..b435c48 100644 (file)
@@ -174,6 +174,17 @@ my @in_between_tests = (
     bind => [],
     test => '-in multi-line subquery test',
   },
+
+  # check that the outer paren opener is not too agressive
+  # note: this syntax *is not legal* on SQLite (maybe others)
+  #       see end of https://rt.cpan.org/Ticket/Display.html?id=99503
+  {
+    where => { foo => { -in => \ '(SELECT 1) UNION (SELECT 2)' } },
+    stmt => 'WHERE foo IN ( (SELECT 1) UNION (SELECT 2) )',
+    bind => [],
+    test => '-in paren-opening works on balanced pairs only',
+  },
+
   {
     where => {
       customer => { -in => \[
@@ -285,7 +296,7 @@ for my $case (@in_between_tests) {
     local $SQL::Abstract::Test::parenthesis_significant = $case->{parenthesis_significant};
     my $label = $case->{test} || 'in-between test';
 
-    my $sql = SQL::Abstract->new ($case->{args} || {});
+    my $sql = SQL::Abstract->new($case->{args} || {});
 
     if (my $e = $case->{throws}) {
       my $stmt;
@@ -304,7 +315,7 @@ for my $case (@in_between_tests) {
         $case->{stmt},
         $case->{bind},
         "$label generates correct SQL and bind",
-      ) || diag_where ( $case->{where} );
+      ) || diag dumper ({ where => $case->{where}, exp => $sql->_expand_expr($case->{where}) });
     }
   }
 }