X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract.pm;h=6ee5a5f90afd9502dff46504e48307e00f06d5a2;hb=fe8b493f5d24be683bf3e3ddf2fb933ae8d193e6;hp=0e41ffda162ba52f251159145ae59dd56f2ae866;hpb=7250aa13440fae80201e48286f4a5939abc97ee7;p=dbsrgits%2FSQL-Abstract.git diff --git a/lib/SQL/Abstract.pm b/lib/SQL/Abstract.pm index 0e41ffd..6ee5a5f 100644 --- a/lib/SQL/Abstract.pm +++ b/lib/SQL/Abstract.pm @@ -277,7 +277,7 @@ sub insert { push @parts, [ $self->_insert_returning($options) ]; } - return $self->_join_parts(' ', @parts); + return $self->join_clauses(' ', @parts); } sub _expand_insert_values { @@ -393,12 +393,12 @@ sub _update_set_values { my ($self, $data) = @_; return $self->render_aqt( - $self->_expand_update_set_values($data), + $self->_expand_update_set_values(undef, $data), ); } sub _expand_update_set_values { - my ($self, $data) = @_; + my ($self, undef, $data) = @_; $self->_expand_maybe_list_expr( [ map { my ($k, $set) = @$_; @@ -530,7 +530,7 @@ sub render_aqt { die "No" if @rest; die "Not a node type: $k" unless $k =~ s/^-//; if (my $meth = $self->{render}{$k}) { - return $self->$meth($v); + return $self->$meth($k, $v); } die "notreached: $k"; } @@ -1068,19 +1068,19 @@ sub _recurse_where { } sub _render_ident { - my ($self, $ident) = @_; + my ($self, undef, $ident) = @_; return $self->_convert($self->_quote($ident)); } sub _render_row { - my ($self, $values) = @_; - my ($sql, @bind) = $self->_render_op([ ',', @$values ]); + my ($self, undef, $values) = @_; + my ($sql, @bind) = $self->_render_op(undef, [ ',', @$values ]); return "($sql)", @bind; } sub _render_func { - my ($self, $rest) = @_; + my ($self, undef, $rest) = @_; my ($func, @args) = @$rest; if (ref($func) eq 'HASH') { $func = $self->render_aqt($func); @@ -1095,18 +1095,18 @@ sub _render_func { } sub _render_bind { - my ($self, $bind) = @_; + my ($self, undef, $bind) = @_; return ($self->_convert('?'), $self->_bindtype(@$bind)); } sub _render_literal { - my ($self, $literal) = @_; + my ($self, undef, $literal) = @_; $self->_assert_bindval_matches_bindtype(@{$literal}[1..$#$literal]); return @$literal; } sub _render_op { - my ($self, $v) = @_; + my ($self, undef, $v) = @_; my ($op, @args) = @$v; if (my $r = $self->{render_op}{$op}) { return $self->$r($op, \@args); @@ -1188,7 +1188,7 @@ sub _render_op_andor { my @parts = grep length($_->[0]), map [ $self->render_aqt($_) ], @$args; return '' unless @parts; return @{$parts[0]} if @parts == 1; - my ($sql, @bind) = $self->_join_parts(' '.$self->_sqlcase($op).' ', @parts); + my ($sql, @bind) = $self->join_clauses(' '.$self->_sqlcase($op).' ', @parts); return '( '.$sql.' )', @bind; } @@ -1201,10 +1201,10 @@ sub _render_op_multop { ? ', ' : ' '.$self->_sqlcase(join ' ', split '_', $op).' ' ); - return $self->_join_parts($join, @parts); + return $self->join_clauses($join, @parts); } -sub _join_parts { +sub join_clauses { my ($self, $join, @parts) = @_; return ( join($join, map $_->[0], @parts),