From: Matt S Trout Date: Wed, 6 Mar 2019 02:02:12 +0000 (+0000) Subject: introduce _expand_ident method, use for update X-Git-Tag: v1.90_01~384 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=9103bd14c91db996bbc54692246fc239230bc403;p=dbsrgits%2FSQL-Abstract.git introduce _expand_ident method, use for update --- diff --git a/lib/SQL/Abstract.pm b/lib/SQL/Abstract.pm index b910617..f0b42a8 100644 --- a/lib/SQL/Abstract.pm +++ b/lib/SQL/Abstract.pm @@ -390,7 +390,7 @@ sub _expand_update_set_values { map { my ($k, $set) = @$_; $set = { -bind => $_ } unless defined $set; - +{ -op => [ '=', { -ident => $k }, $set ] }; + +{ -op => [ '=', $self->_expand_ident(-ident => $k), $set ] }; } map { my $k = $_; @@ -902,6 +902,13 @@ sub _expand_expr_hashpair { die "notreached"; } +sub _expand_ident { + my ($self, undef, $body) = @_; + my @parts = map split(/\Q${\($self->{name_sep}||'.')}\E/, $_), + ref($body) ? @$body : $body; + return +{ -ident => \@parts }; +} + sub _recurse_where { my ($self, $where, $logic) = @_;