sub expr_sql_is (&;@) {
my $sub = shift;
@_
- ? is_deeply($rend->render(_mk_expr($sub)), @_)
- : ::Dwarn($rend->render(_mk_expr($sub)));
+ ? is_deeply($rend->render(_run_expr($sub)->{expr}), @_)
+ : ::Dwarn($rend->render(_run_expr($sub)->{expr}));
}
expr_sql_is { $_->foo }
[ "( foo = ? AND bar = ? AND baz > ? )", binding(1, "foo", 3) ],
"Flatten expression ok";
-expr_sql_is { !$_->foo }
- [ "NOT foo" ],
+expr_sql_is { !$_->foo } # XXX revisit this why are the parens here
+ [ "( NOT foo )" ],
"Unary expression ok";
expr_sql_is { SELECT { $_->foo } }
expr_sql_is { SELECT { $_->foo, 1 } }
# the extra space here is a little icky but Naive's _flatten_structure
# will need rewriting to fix it - commit bits available if you do it first
- [ "SELECT foo , ?", binding(1) ],
+ [ "SELECT foo, ?", binding(1) ],
"Identifier and literal";
+
+expr_sql_is { SELECT { $_->foo => AS("foom"), 1 } }
+ [ "SELECT foo AS foom, ?", binding(1) ],
+ "AS with parens";
+
+expr_sql_is { SELECT { $_->foo => AS "foom", 1 } }
+ [ "SELECT foo AS foom, ?", binding(1) ],
+ "AS without parens";