[Dbix-class] MySql distinct count fix

Peter Rabbitson rabbit+dbic at rabbit.us
Mon Jun 8 11:15:53 GMT 2009


Anthony Gladdish wrote:
> Hi Peter,
> 
>> -----Original Message-----
>> From: Peter Rabbitson [mailto:rabbit+dbic at rabbit.us]
>> Sent: 07 June 2009 22:22
>> To: DBIx::Class user and developer list
>> Subject: [Dbix-class] MySql distinct count fix
>>
>> Anthony Gladdish wrote:
>>> Hi,
>>>
>>> Using DBIC v0.08102_07.
>>>
>>> My Result class relationships:
>>>
>>> 1. Course.pm
>>> 2. Event.pm:
>>> __PACKAGE__->belongs_to( 'course' => 'Course', 'based_on' );
>>>
>>> My test:
>>>
>>> my $search;
>>> push( @$search, ('me.code', { 'like', '%i1%' } ) );
>>> my $rs = $schema->resultset('Event')->search(
>>>         {
>>>           -or => $search,
>>>         },
>>>         {
>>>           distinct => 1,
>>>           prefetch => 'course',
>>>         }
>>> );
>>> is $rs->count, 1, '$rs ok';
>>>
>>> Fails with:
>>>
>>> DBIx::Class::ResultSet::count(): DBI Exception: DBD::mysql::st execute
>> failed: Duplicate column name 'id' [for Statement "SELECT COUNT( * )
>>FROM (SELECT me.id, me.code, me.start, me.hours, me.end, me.leader,
>> me.based_on, me.attend_max, me.created_by, me.attend_min, me.RT_ticket,
>> me.status, me.created, me.location, me.price_1, me.price_2, me.price_3,
>> me.price_4, me.price_5, course.id, course.title, course.topics,
>> course.tasks, course.prerequisites, course.overview, course.target,
>> course.quotes, course.code, course.hours, course.sub_title,
>> course.further_tasks, course.short_desc, course.shorter_desc FROM event
>> me  JOIN event_defaults course ON course.id = me.based_on WHERE
>> ( me.code LIKE ? ) GROUP BY me.id, me.code, me.start, me.hours, me.end,
>> me.leader, me.based_on, me.attend_max, me.created_by, me.attend_min,
>> me.RT_ticket, me.status, me.created, me.location, me.price_1, me.price_2,
>> me.price_3, me.price_4, me.price_5, course.id, course.title,
>> course.topics, course.tasks, cou
>> rse.prerequisites, course.overview, course.target, course.quotes,
>> course.code, course.hours, course.sub_title, course.further_tasks,
>> course.short_desc, course.shorter_desc) count_subq" with ParamValues:
>> 0='%i1%']
>>> Passes, if I comment out either "distinct" or "prefetch" but this is
>> undesired.
>>> Am I doing anything wrong?
>>> Has this been fixed in a newer RC yet that I can test?
>>>
>> Fixed in http://dev.catalyst.perl.org/svnweb/bast/revision/?rev=6537
>>
> 
> Have just tested this against my own libraries and they all pass.
> 

It's at least a week off. There are other regressions we need to fix first.



More information about the DBIx-Class mailing list