X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract%2FExtraClauses.pm;h=9eb04a8e3f9ce93f0a246a9c7022ab72222e2454;hb=7b811acd927a74444d495bbf8508e57c3144faa3;hp=eaac9c171cf9ca21ae4da60fa985c5dac8d3bc3a;hpb=3f9899e505733687a57b30404dff4a060dca7474;p=scpubgit%2FQ-Branch.git diff --git a/lib/SQL/Abstract/ExtraClauses.pm b/lib/SQL/Abstract/ExtraClauses.pm index eaac9c1..9eb04a8 100644 --- a/lib/SQL/Abstract/ExtraClauses.pm +++ b/lib/SQL/Abstract/ExtraClauses.pm @@ -87,14 +87,14 @@ sub register_defaults { $self->clause_renderer('select.setop' => sub { my ($self, undef, $setop) = @_; - $self->render_aqt($setop); + @{ $self->render_aqt($setop) }; }); $self->renderer($_ => sub { my ($self, $setop, $args) = @_; - $self->join_clauses( + $self->join_query_parts( ' '.$self->format_keyword(join '_', $setop, ($args->{type}||())).' ', - map [ $self->render_aqt($_) ], @{$args->{queries}} + @{$args->{queries}} ); }) for qw(union intersect except); @@ -140,18 +140,18 @@ sub register_defaults { $self->clause_expander('select.with_recursive', $with_expander); $self->clause_renderer('select.with' => sub { my ($self, undef, $with) = @_; - my $q_part = [ $self->join_clauses(', ', + my $q_part = [ $self->join_query_parts(', ', map { my ($alias, $query) = @$_; - [ $self->join_clauses(' ', - [ $self->_render_alias($alias) ], - [ $self->format_keyword('as') ], - [ $self->render_aqt($query) ], + [ $self->join_query_parts(' ', + $self->_render_alias($alias), + $self->format_keyword('as'), + $query, ) ] } @{$with->{queries}} ) ]; - return $self->join_clauses(' ', - [ $self->format_keyword(join '_', 'with', ($with->{type}||'')) ], + return $self->join_query_parts(' ', + $self->format_keyword(join '_', 'with', ($with->{type}||'')), $q_part, ); }); @@ -159,8 +159,6 @@ sub register_defaults { return $self; } -sub format_keyword { $_[0]->_sqlcase(join ' ', split '_', $_[1]) } - sub _expand_select_clause_from { my ($self, undef, $from) = @_; +(from => $self->_expand_from_list(undef, $from)); @@ -215,28 +213,26 @@ sub _expand_join { sub _render_from_list { my ($self, undef, $list) = @_; - return $self->join_clauses(', ', map [ $self->render_aqt($_) ], @$list); + return $self->join_query_parts(', ', @$list); } sub _render_join { my ($self, undef, $args) = @_; my @parts = ( - [ $self->render_aqt($args->{from}) ], - [ $self->format_keyword(join '_', ($args->{type}||()), 'join') ], - [ $self->render_aqt( - map +($_->{-ident} || $_->{-as} ? $_ : { -row => [ $_ ] }), $args->{to} - ) ], + $args->{from}, + $self->format_keyword(join '_', ($args->{type}||()), 'join'), + (map +($_->{-ident} || $_->{-as} ? $_ : { -row => [ $_ ] }), $args->{to}), ($args->{on} ? ( - [ $self->format_keyword('on') ], - [ $self->render_aqt($args->{on}) ], + $self->format_keyword('on') , + $args->{on}, ) : ()), ($args->{using} ? ( - [ $self->format_keyword('using') ], - [ $self->render_aqt($args->{using}) ], + $self->format_keyword('using'), + $args->{using}, ) : ()), ); - return $self->join_clauses(' ', @parts); + return $self->join_query_parts(' ', @parts); } sub _expand_op_as { @@ -249,11 +245,11 @@ sub _expand_op_as { sub _render_as { my ($self, undef, $args) = @_; my ($thing, @alias) = @$args; - return $self->join_clauses( + return $self->join_query_parts( ' ', - [ $self->render_aqt($thing) ], - [ $self->format_keyword('as') ], - [ $self->_render_alias(\@alias) ], + $self->render_aqt($thing), + $self->format_keyword('as'), + $self->_render_alias(\@alias), ); } @@ -261,12 +257,12 @@ sub _render_alias { my ($self, $args) = @_; my ($as, @cols) = @$args; return (@cols - ? $self->join_clauses('', - [ $self->render_aqt($as) ], + ? $self->join_query_parts('', + $as, [ '(' ], - [ $self->join_clauses( + [ $self->join_query_parts( ', ', - map [ $self->render_aqt($_) ], @cols + @cols ) ], [ ')' ], )