X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract%2FExtraClauses.pm;h=c055b8b28a12250ce18546c31ddb26edb53b92b1;hb=a01911a20b326afd1a45f97f14aca68206708eba;hp=e29aea396a17ebd02fcf747f70895d5a8b081791;hpb=1ba47f38ffd3b99b3ae3be9520edafd560bfb026;p=scpubgit%2FQ-Branch.git diff --git a/lib/SQL/Abstract/ExtraClauses.pm b/lib/SQL/Abstract/ExtraClauses.pm index e29aea3..c055b8b 100644 --- a/lib/SQL/Abstract/ExtraClauses.pm +++ b/lib/SQL/Abstract/ExtraClauses.pm @@ -92,7 +92,7 @@ sub register_defaults { 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}} @@ -138,10 +138,10 @@ sub register_defaults { $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) = @_; @@ -155,10 +155,9 @@ sub register_defaults { ) ] } @{$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, - [ ')' ], ); }); @@ -220,12 +219,12 @@ sub _expand_join { } 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}) ], @@ -253,7 +252,7 @@ sub _expand_op_as { } sub _render_as { - my ($self, $args) = @_; + my ($self, undef, $args) = @_; my ($thing, @alias) = @$args; return $self->join_clauses( ' ', @@ -280,4 +279,9 @@ sub _render_alias { ); } +sub _expand_update_clause_target { + my ($self, $target) = @_; + +(target => $self->_expand_from_list(undef, $target)); +} + 1;