X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract%2FExtraClauses.pm;h=b18d724768c371fafae69e8ed4a43379eb75f63e;hb=161d810565dbf4a3be23d02d37c3a9374511eb77;hp=2dafda1aa83f606a7a7eab566fca1b345c9e6a0b;hpb=a97ecd95f2256f8e86c370fb19c570aa013cbf89;p=scpubgit%2FQ-Branch.git diff --git a/lib/SQL/Abstract/ExtraClauses.pm b/lib/SQL/Abstract/ExtraClauses.pm index 2dafda1..b18d724 100644 --- a/lib/SQL/Abstract/ExtraClauses.pm +++ b/lib/SQL/Abstract/ExtraClauses.pm @@ -176,6 +176,14 @@ sub register_defaults { for qw(with with_recursive); $self->clause_renderer("${stmt}.with", $with_renderer); } + $self->expander(cast => sub { + return { -func => [ cast => $_[2] ] } if ref($_[2]) eq 'HASH'; + my ($cast, $to) = @{$_[2]}; + +{ -func => [ cast => { -as => [ + $self->expand_expr($cast), + $self->expand_expr($to, -ident), + ] } ] }; + }); return $self; } @@ -273,9 +281,8 @@ sub _render_as { my ($self, undef, $args) = @_; my ($thing, $alias) = @$args; return $self->join_query_parts( - ' ', + ' '.$self->format_keyword('as').' ', $thing, - $self->format_keyword('as'), $alias, ); }