[Dbix-class] @bind confusion

Wolfgang Kinkeldei wolfgang at kinkeldei.de
Mon Jul 19 20:33:44 GMT 2010


Hello,

when using subqueries in the 'from' part of a query, sometimes the list of @bind parameters is not maintained correct. As a simple testcase please find a primitive subselect enclosed that just does a count with a correlated subquery.

<snip>
# a simple counting subquery
my $subquery = 
    $schema->resultset('PersonRole')
        ->search( { role_id => 'admin' } ) # 1st bind param
        ->count_rs
        ->as_query;

my @people = 
    $schema->resultset('Person')
        ->search(
            {
                'me.person_id' => 42, # 2nd bind param
            },
            {
                select => [ $subquery ],
                # whatever you join here, @bind gets confused
                join => 'person_regions'
            })
        ->all;
<snap>

if the 'join' attribute in the main query is left off, the SQL is fired as expected:

SELECT (SELECT COUNT( * ) FROM person_role me WHERE ( role_id = $1 )) FROM person me WHERE ( me.person_id = $2 )
DETAIL:  parameters: $1 = 'admin', $2 = '42'


however, if the join is present:
DBIx::Class::ResultSet::all(): Cannot bind unknown placeholder 3 (3) at /Library/Perl/5.10.0/DBIx/Class/Storage/DBI.pm line 1475.


I am using:
 - DBIx::Class 0.08123
 - SQL::Abstract 1.67
 - PostgreSQL 8.4 as the database


PS: I hope it was an intention to use subqueries this way in the 'from' part of queries...


Regards,

Wolfgang Kinkeldei

-- 

' /\_/\ ' .print[split??,"".(($/=q|Cms)+-03467:;<=|)=~tr!C-z -B! -z!)x
'( o.o )' .$/]->[hex]foreach split qr<>,qq+1ecd039ad65b025b8063475b+||
' > ^ < ' .q<!-- Wolfgang Kinkeldei - mailto:wolfgang at kinkeldei.de -->





More information about the DBIx-Class mailing list