X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract.pm;h=503ac9c5fa36965113f05741080890feedcb8110;hb=38c0e9cc5b4a1aea12ce608840d75d72e310bf28;hp=469b2b64e97c53d669a02cc81aef2e3569e365b2;hpb=af642ff4304bc530b18bed782aaf078b11851340;p=scpubgit%2FQ-Branch.git diff --git a/lib/SQL/Abstract.pm b/lib/SQL/Abstract.pm index 469b2b6..503ac9c 100644 --- a/lib/SQL/Abstract.pm +++ b/lib/SQL/Abstract.pm @@ -1302,7 +1302,7 @@ sub _expand_between { return +{ -op => [ $op, $self->expand_expr(ref($k) ? $k : { -ident => $k }), - @rhs + map $self->expand_expr($_, -value), @rhs ] } } @@ -1433,7 +1433,7 @@ sub _render_literal { sub _render_keyword { my ($self, undef, $keyword) = @_; - return [ $self->format_keyword($keyword) ]; + return [ $self->_sqlcase(join ' ', split '_', $keyword) ]; } sub _render_op { @@ -1521,7 +1521,7 @@ sub _render_op_multop { return $self->render_aqt($parts[0]) if @parts == 1; my $join = ($op eq ',' ? ', ' - : $self->format_keyword(" ${op} ") + : { -keyword => " ${op} " } ); return $self->join_query_parts($join, @parts); } @@ -1541,6 +1541,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($_) @@ -1765,7 +1768,7 @@ sub _convert { #my ($self, $arg) = @_; if (my $conv = $_[0]->{convert_where}) { return @{ $_[0]->join_query_parts('', - $_[0]->format_keyword($conv), + $_[0]->_sqlcase($conv), '(' , $_[1] , ')' ) }; } @@ -1796,23 +1799,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 @@ -1820,8 +1806,6 @@ sub _sqlcase { return $_[0]->{case} ? $_[1] : uc($_[1]); } -sub format_keyword { $_[0]->_sqlcase(join ' ', split '_', $_[1]) } - #====================================================================== # DISPATCHING FROM REFKIND #======================================================================