my $rend = Data::Query::Renderer::SQL::Naive->new({ quote_chars => [ "'" ] });
+sub binding { map perl_scalar_value($_), @_ }
+
sub expr_sql_is (&;@) {
my $sub = shift;
@_
"Complex identifier -> SQL";
expr_sql_is { $_->foo == 1 }
- [
- "foo = ?",
- {
- subtype => {
- Perl => "Scalar"
- },
- type => "Value",
- value => 1
- }
- ],
+ [ "foo = ?", binding(1) ],
"Simple expression -> SQL";
expr_sql_is { ($_->foo == 1) & ($_->bar eq "foo") }
- [
- "( foo = ? AND bar = ? )",
- {
- subtype => {
- Perl => "Scalar"
- },
- type => "Value",
- value => 1
- },
- {
- subtype => {
- Perl => "Scalar"
- },
- type => "Value",
- value => "foo"
- }
- ],
+ [ "( foo = ? AND bar = ? )", binding(1, "foo") ],
"Compound expression -> SQL";
expr_sql_is { ($_->foo == 1) & ($_->bar eq "foo") & ($_->baz > 3) }
- [
- "( foo = ? AND bar = ? AND baz > ? )",
- {
- subtype => {
- Perl => "Scalar"
- },
- type => "Value",
- value => 1
- },
- {
- subtype => {
- Perl => "Scalar"
- },
- type => "Value",
- value => "foo"
- },
- {
- subtype => {
- Perl => "Scalar"
- },
- type => "Value",
- value => 3
- }
- ],
+ [ "( foo = ? AND bar = ? AND baz > ? )", binding(1, "foo", 3) ],
"Flatten expression ok";
expr_sql_is { !$_->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 , ?", perl_scalar_value(1) ],
+ [ "SELECT foo , ?", binding(1) ],
"Identifier and literal";