introduce _expand_ident method, use for update
Matt S Trout [Wed, 6 Mar 2019 02:02:12 +0000 (02:02 +0000)]
lib/SQL/Abstract.pm

index 0425268..1febc93 100644 (file)
@@ -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) = @_;