push @parts, [ $self->_insert_returning($options) ];
}
- return $self->_join_parts(' ', @parts);
+ return $self->join_query_parts(' ', @parts);
}
sub _expand_insert_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) = @$_;
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";
}
}
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);
}
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);
sub _render_op_andor {
my ($self, $op, $args) = @_;
- my @parts = grep length($_->[0]), map [ $self->render_aqt($_) ], @$args;
+ my @parts = 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_query_parts(' '.$self->_sqlcase($op).' ', @parts);
return '( '.$sql.' )', @bind;
}
sub _render_op_multop {
my ($self, $op, $args) = @_;
- my @parts = grep length($_->[0]), map [ $self->render_aqt($_) ], @$args;
+ my @parts = map [ $self->render_aqt($_) ], @$args;
return '' unless @parts;
return @{$parts[0]} if @parts == 1;
my $join = ($op eq ','
? ', '
: ' '.$self->_sqlcase(join ' ', split '_', $op).' '
);
- return $self->_join_parts($join, @parts);
+ return $self->join_query_parts($join, @parts);
}
-sub _join_parts {
+sub join_query_parts {
my ($self, $join, @parts) = @_;
return (
join($join, map $_->[0], @parts),