Subject: | select sum(foo) with 'as' generates invalid SQL |
Hopefully this is complete enough.
We're using SQL::Abstract version 1.72, Perl 5.10.0, MySQL.
How to replicate:
Create an 'entries' table with: CREATE TABLE entries (id int not null
primary key auto_increment, debit int, credit int);
No need to populate it. Write a trivial Test/Schema.pm and
Test/Schema/Result/Entries.pm (included in attached tarball).
DBIC_TRACE=1 ; export DBIC_TRACE
When I do this:
my @x = $schema->resultset('Entries')->search({},
{
select => 'sum(debit) - sum(credit)',
as => 'assets'
}
);
what it actually tries is:
SELECT me.sum(debit) - sum(credit) FROM entries me;
instead of
SELECT sum(me.debit) - sum(me.credit) FROM entries me;
and an exception is thrown (FUNCTION me.sum does not exist...).
The same problem happens if you just use select => 'sum(debit)'. It
seems to be putting the "me." in the wrong place.
This worked just fine in the last version of DBIC we were using.
Unfortunately I don't know what that was; we had to rebuild our EC2
instance after the last outage and lost that information. It does work
in SQL::Abstract 1.60 and DBIC version 0.08112.
I'm largely unfamiliar with the guts of DBIC. If necessary I can track
this down myself I can and issue a patch, but if this has already been
reported and fixed, I'd like to save myself the time. Plus I'm sure
someone more familiar with the code can do it more quickly and elegantly.
Thank you!
Subject: | DBICbug.tar.gz |
Message body not shown because it is not plain text.