expand , args while not doubling listification
[scpubgit/Q-Branch.git] / lib / SQL / Abstract.pm
index f736487..35a971d 100644 (file)
@@ -1258,6 +1258,9 @@ sub _expand_order_by {
 
   return unless defined($arg) and not (ref($arg) eq 'ARRAY' and !@$arg);
 
+  return $self->_expand_maybe_list_expr($arg)
+    if ref($arg) eq 'HASH' and ($arg->{-op}||[''])->[0] eq ',';
+
   my $expander = sub {
     my ($self, $dir, $expr) = @_;
     my @to_expand = ref($expr) eq 'ARRAY' ? @$expr : $expr;
@@ -1343,7 +1346,10 @@ sub _table  {
 
 sub _expand_maybe_list_expr {
   my ($self, $expr, $default) = @_;
-  return $expr if ref($expr) eq 'HASH' and (($expr->{-op}||[''])->[0] eq ',');
+  return { -op => [
+    ',', map $self->expand_expr($_, $default), 
+          @{$expr->{-op}}[1..$#{$expr->{-op}}]
+  ] } if ref($expr) eq 'HASH' and ($expr->{-op}||[''])->[0] eq ',';
   return +{ -op => [ ',',
     map $self->expand_expr($_, $default),
       ref($expr) eq 'ARRAY' ? @$expr : $expr