$self->{expand}{exists} = sub {
$_[0]->_expand_op(undef, [ exists => $_[2] ]);
};
+ $self->{render}{convert_where} = sub {
+ my $self = shift;
+ local $self->{convert_where} = $self->{convert};
+ $self->render_aqt($_[0]);
+ };
return $self;
}
sub _expand_select_clause_where {
my ($self, undef, $where) = @_;
- +(where => $self->expand_expr($where));
+ my $exp = $self->expand_expr($where);
+ +(where => ($self->{convert} ? { -convert_where => $exp } : $exp));
}
sub _expand_select_clause_order_by {
my @parts;
foreach my $clause (@{$self->{clauses_of}{$type}}) {
next unless my $clause_expr = $args->{$clause};
- local $self->{convert_where} = $self->{convert} if $clause eq 'where';
- my ($sql) = my @part = do {
+ my @part = do {
if (my $rdr = $self->{render_clause}{"${type}.${clause}"}) {
$self->$rdr($clause, $clause_expr);
} else {
($sql, @bind);
}
};
- next unless defined($sql) and length($sql);
push @parts, \@part;
}
- my ($sql, @bind) = $self->join_clauses(' ', @parts);
+ my ($sql, @bind) = $self->join_query_parts(' ', @parts);
return (
(our $Render_Top_Level ? $sql : '('.$sql.')'),
@bind
sub _render_values {
my ($self, undef, $values) = @_;
- my ($v_sql, @bind) = $self->join_clauses(
+ my ($v_sql, @bind) = $self->join_query_parts(
', ',
map [ $self->render_aqt($_) ],
ref($values) eq 'ARRAY' ? @$values : $values
}
}
+sub statement_list { sort keys %{$_[0]->{clauses_of}} }
+
sub clauses_of {
my ($self, $of, @clauses) = @_;
unless (@clauses) {