# having often contains scalarrefs - thus parse it out entirely
my @parts = @$g;
if ($attrs->{having}) {
- local $sql_maker->{having_bind};
- local $sql_maker->{quote_char} = $sql_maker->{quote_char};
- local $sql_maker->{name_sep} = $sql_maker->{name_sep};
- unless (defined $sql_maker->{quote_char} and length $sql_maker->{quote_char}) {
- $sql_maker->{quote_char} = [ "\x00", "\xFF" ];
- # if we don't unset it we screw up retarded but unfortunately working
- # 'MAX(foo.bar)' => { '>', 3 }
- $sql_maker->{name_sep} = '';
- }
-
- my ($lquote, $rquote, $sep) = map { quotemeta $_ } ($sql_maker->_quote_chars, $sql_maker->name_sep);
-
- my $sql = $sql_maker->_parse_rs_attrs ({ having => $attrs->{having} });
+ my $having_dq = $self->_sqla_converter->_where_to_dq($attrs->{having});
+ $self->_scan_identifiers(
+ sub { push @parts, join('.', @{$_[0]->{elements}}) },
+ $having_dq
+ );
# search for both a proper quoted qualified string, for a naive unquoted scalarref
# and if all fails for an utterly naive quoted scalar-with-function
- while ($sql =~ /
- $rquote $sep $lquote (.+?) $rquote
- |
- [\s,] \w+ \. (\w+) [\s,]
- |
- [\s,] $lquote (.+?) $rquote [\s,]
- /gx) {
- push @parts, ($1 || $2 || $3); # one of them matched if we got here
- }
+ #while ($sql =~ /
+ # $rquote $sep $lquote (.+?) $rquote
+ # |
+ # [\s,] \w+ \. (\w+) [\s,]
+ # |
+ # [\s,] $lquote (.+?) $rquote [\s,]
+ #/gx) {
+ # push @parts, ($1 || $2 || $3); # one of them matched if we got here
+ #}
}
for (@parts) {