fixup keyword rendering
[scpubgit/Q-Branch.git] / lib / SQL / Abstract.pm
index 71d6204..720f378 100644 (file)
@@ -1433,7 +1433,9 @@ sub _render_literal {
 
 sub _render_keyword {
   my ($self, undef, $keyword) = @_;
-  return [ $self->_sqlcase(join ' ', split '_', $keyword) ];
+  return [ $self->_sqlcase(
+    ref($keyword) ? $$keyword : join ' ', split '_', $keyword
+  ) ];
 }
 
 sub _render_op {
@@ -1521,7 +1523,7 @@ sub _render_op_multop {
   return $self->render_aqt($parts[0]) if @parts == 1;
   my $join = ($op eq ','
                 ? ', '
-                : $self->_sqlcase(' '.(join ' ', split '_', $op).' ')
+                : { -keyword => " ${op} " }
              );
   return $self->join_query_parts($join, @parts);
 }
@@ -1541,6 +1543,9 @@ sub _render_values {
 
 sub join_query_parts {
   my ($self, $join, @parts) = @_;
+  if (ref($join) eq 'HASH') {
+    $join = $self->render_aqt($join)->[0];
+  }
   my @final = map +(
     ref($_) eq 'HASH'
       ? $self->render_aqt($_)
@@ -1564,7 +1569,7 @@ sub _render_unop_paren {
 sub _render_unop_prefix {
   my ($self, $op, $v) = @_;
   return $self->join_query_parts(' ',
-    $self->_sqlcase($op), $v->[0]
+    { -keyword => \$op }, $v->[0]
   );
 }
 
@@ -1796,23 +1801,6 @@ sub _assert_bindval_matches_bindtype {
   }
 }
 
-sub _join_sql_clauses {
-  my ($self, $logic, $clauses_aref, $bind_aref) = @_;
-
-  if (@$clauses_aref > 1) {
-    my $join  = " " . $self->_sqlcase($logic) . " ";
-    my $sql = '( ' . join($join, @$clauses_aref) . ' )';
-    return ($sql, @$bind_aref);
-  }
-  elsif (@$clauses_aref) {
-    return ($clauses_aref->[0], @$bind_aref); # no parentheses
-  }
-  else {
-    return (); # if no SQL, ignore @$bind_aref
-  }
-}
-
-
 # Fix SQL case, if so requested
 sub _sqlcase {
   # LDNOTE: if $self->{case} is true, then it contains 'lower', so we