[Dbix-class] fate of mssql_limit_regression branch?

Peter Rabbitson rabbit+dbic at rabbit.us
Tue Jan 26 20:12:55 GMT 2010


Alan Humphrey wrote:
> 
> I've installed the trunk code and, for my purposes, the unsafe_subselect_ok attribute is probably going to be sufficient.  Thank you for your thorough documentation.
> 
> But (and you knew there was going to be a "but", right?) the trunk code still breaks on the following (same place as above):
> 
>     $items = $c->model('BirdWebDB::Birds')->search(
>     {},
>         {order_by => {'-'. $sort_order => $sort_column},
>      unsafe_subselect_ok => 1,
>      join     => ['shadebirds'],
>      prefetch => [qw/genus species/],
>          page     => $page,
>          rows     => $limit}
>     );
> 
> [error] DBI Exception: DBD::Sybase::st execute failed: Server message number=306 severity=16 state=2 line=1 server=SQLB29 text=The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.
>  [for Statement "SELECT me.id, me.genus_id, me.species_name_id, me.image_id, me.north_america_map_id, me.washington_map_id, me.default_sound_id, me.is_washington_bird, me.common_name, me.taxonomic_order, me.identification, me.voice, me.habitat, me.behavior, me.diet, me.nesting, me.migration, me.where_found, me.conservation_status, me.breeding, me.notes, genus.id, genus.family_id, genus.genus_scientific_name, genus.genus_common_name, genus.genus_description, species.id, species.species_scientific_name, species.species_name_notes FROM ( SELECT me.id, me.genus_id, me.species_name_id, me.image_id, me.north_america_map_id, me.washington_map_id, me.default_sound_id, me.is_washington_bird, me.common_name, me.taxonomic_order, me.identification, me.voice, me.habitat, me.behavior, me.diet, me.nesting, me.migration, me.where_found, me.conservation_status, me.breeding, me.notes FROM ( SELECT me.*, ROW_NUMBER() OVER( ORDER BY (SELECT(1)) ) AS rno__row__index FROM ( SELECT me.id, me.genu
s_id, me.species_name_id, me.image_id, me.north_america_map_id, me.washington_map_id, me.default_sound_id, me.is_washington_bird, me.common_name, me.taxonomic_order, me.identification, me.voice, me.habitat, me.behavior, me.diet, me.nesting, me.migration, me.where_found, me.conservation_status, me.breeding, me.notes FROM (SELECT TOP 4294967296 me.id, me.genus_id, me.species_name_id, me.image_id, me.north_america_map_id, me.washington_map_id, me.default_sound_id, me.is_washington_bird, me.common_name, me.taxonomic_order, me.identification, me.voice, me.habitat, me.behavior, me.diet, me.nesting, me.migration, me.where_found, me.conservation_status, me.breeding, me.notes FROM birds me JOIN shadecoffee_bird_info shadebirds ON shadebirds.bird_id = me.id JOIN genera genus ON genus.id = me.genus_id JOIN species_names species ON species.id = me.species_name_id ORDER BY taxonomic_order ASC) me ) me ) me WHERE rno__row__index BETWEEN 1 AND 10 ) me JOIN shadecoffee_bird_info shadebirds O
N shadebirds.bird_id = me.id JOIN genera genus ON genus.id = me.genus_id JOIN species_names species ON species.id = me.species_name_id GROUP BY me.id, me.genus_id, me.species_name_id, me.image_id, me.north_america_map_id, me.washington_map_id, me.default_sound_id, me.is_washington_bird, me.common_name, me.taxonomic_order, me.identification, me.voice, me.habitat, me.behavior, me.diet, me.nesting, me.migration, me.where_found, me.conservation_status, me.breeding, me.notes, genus.id, genus.family_id, genus.genus_scientific_name, genus.genus_common_name, genus.genus_description, species.id, species.species_scientific_name, species.species_name_notes ORDER BY taxonomic_order ASC"]
> 
> After playing with the generated SQL it turns out the problem is in the GROUP BY statement which has a bunch of text columns.
> 
> Let me know if there's anything I can do.
> 

One step ahead of you. This group_by should not have been there, and the
issue has been resolved by a merge from about 4 hours ago. Please update
your checkout and try again.



More information about the DBIx-Class mailing list