foreach my $setop (qw(union intersect except)) {
$self->renderer($setop => sub {
- my ($self, $args) = @_;
+ my ($self, undef, $args) = @_;
$self->join_clauses(
' '.$self->format_keyword(join '_', $setop, ($args->{type}||())).' ',
map [ $self->render_aqt($_) ], @{$args->{queries}}
$self->clause_expander('select.with_recursive' => sub {
my ($self, $with) = @_;
my $exp = $self->$with_expander($with);
- return +{
+ return +(with => +{
%$exp,
type => 'recursive'
- };
+ });
});
$self->clause_renderer('select.with' => sub {
my ($self, $with) = @_;
) ]
} @{$with->{queries}}
) ];
- return $self->join_clauses('',
- [ $self->format_keyword(join '_', 'with', ($with->{type}||'')).' (' ],
+ return $self->join_clauses(' ',
+ [ $self->format_keyword(join '_', 'with', ($with->{type}||'')) ],
$q_part,
- [ ')' ],
);
});
}
sub _render_from_list {
- my ($self, $list) = @_;
+ my ($self, undef, $list) = @_;
return $self->join_clauses(', ', map [ $self->render_aqt($_) ], @$list);
}
sub _render_join {
- my ($self, $args) = @_;
+ my ($self, undef, $args) = @_;
my @parts = (
[ $self->render_aqt($args->{from}) ],
}
sub _render_as {
- my ($self, $args) = @_;
+ my ($self, undef, $args) = @_;
my ($thing, @alias) = @$args;
return $self->join_clauses(
' ',
);
}
+sub _expand_update_clause_target {
+ my ($self, $target) = @_;
+ +(target => $self->_expand_from_list(undef, $target));
+}
+
1;