Re: [Dbix-class] select specific columns on resultset
Can you show us the complete piece of code for the search/output, and the class definitions? That trace looks like you first asked for Id only, and then later did another query, or called a relation method on the result . This code: my @recs=$self-db-resultset($self-table)-search({},{columns = [qw/ id/ ],},)-all; foreach my $row (@recs) { print $row-Name; } Should output undefs (or possibly a warning that you didnt fetch that column, I forget). Jess On Wed, 10 Apr 2013 10:25:14 +0100, max maxt...@gmail.com wrote: Ok, sorry, I copied the wrong example, I tried with: my @recs=$self-db-resultset($self-table)-search({},{columns = [qw/ id /],},)-all; but I can see the Name column for example in the foreach loop. After some debugging on mysql I found some stranges: 67 Query SELECT me.id FROM ReportTemplates me 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '124' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '125' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '126' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '127' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '135' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '136' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '146' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '150' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '177' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '184' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '192' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '193' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '124' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '125' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '126' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '127' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '135' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '136' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '146' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '150' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '177' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '184' ) the first query is correct but the others ? I suspect that is not related with dbix, but why I can see column if I have not specified them ? thanks 2013/4/10 Peter Rabbitson rabbit+d...@rabbit.us On Tue, Apr 09, 2013 at 03:58:53PM +0200, max wrote: Thanks for the answer, this piece of code is inside a perl sub, I tried to extract the array elements as: foreach my $row (@recs) { my $id=$row-id; my $name=$row-Name; print MYFILE recs name: $name, id: $id\n\n; } and I can see the Name element for example. Well... you asked for it didn't you? (in fact you asked twice) columns = [qw/id Name OperationId Name /] I am at this point confused what is your problem exactly... I tried to insert the DBIC_TRACE in the sub ouputting it to a file but it's always empty ( $self-db-storage-debugfh(IO::File-new('file','w'));), is there another way to use it ? When you use it this way you also need to -storage-debug(1) for things to start working. During debugging DBIC_TRACE=1 with dump to screen is much more common, hence why noone answered quuckly ;) Cheers ___ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ ___ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive:
Re: [Dbix-class] select specific columns on resultset
Ok, sorry, I copied the wrong example, I tried with: my @recs=$self-db-resultset($self-table)-search({},{columns = [qw/ id /],},)-all; but I can see the Name column for example in the foreach loop. After some debugging on mysql I found some stranges: 67 Query SELECT me.id FROM ReportTemplates me 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '124' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '125' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '126' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '127' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '135' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '136' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '146' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '150' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '177' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '184' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '192' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '193' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '124' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '125' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '126' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '127' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '135' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '136' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '146' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '150' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '177' ) 67 Query SELECT me.id, me.OperationId, me.Name, me.Description, me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE ( me.id= '184' ) the first query is correct but the others ? I suspect that is not related with dbix, but why I can see column if I have not specified them ? thanks 2013/4/10 Peter Rabbitson rabbit+d...@rabbit.us On Tue, Apr 09, 2013 at 03:58:53PM +0200, max wrote: Thanks for the answer, this piece of code is inside a perl sub, I tried to extract the array elements as: foreach my $row (@recs) { my $id=$row-id; my $name=$row-Name; print MYFILE recs name: $name, id: $id\n\n; } and I can see the Name element for example. Well... you asked for it didn't you? (in fact you asked twice) columns = [qw/id Name OperationId Name /] I am at this point confused what is your problem exactly... I tried to insert the DBIC_TRACE in the sub ouputting it to a file but it's always empty ( $self-db-storage-debugfh(IO::File-new('file','w'));), is there another way to use it ? When you use it this way you also need to -storage-debug(1) for things to start working. During debugging DBIC_TRACE=1 with dump to screen is much more common, hence why noone answered quuckly ;) Cheers ___ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk ___ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
Re: [Dbix-class] select specific columns on resultset
On Tue, Apr 09, 2013 at 03:19:07PM +0200, max wrote: Hi all, I'm new to DBIx, I'm trying to retrieve only a subset of columns from a result set: my @recs=$self-db-resultset($self-table)-search({},{columns = [qw/ id Name OperationId Name /],},)-all; The above looks correct but the result contains all the columns, How did you determine this? Also what does the DBIC_TRACE=1 look like? Cheers ___ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
Re: [Dbix-class] select specific columns on resultset
On Tue, Apr 09, 2013 at 03:19:07PM +0200, max wrote: I'm new to DBIx, It is DBIx::Class (or DBIC for short). There are hundreds of unrelated modules in the DBIx:: namespace. Cheers ___ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
Re: [Dbix-class] select specific columns on resultset
Thanks for the answer, this piece of code is inside a perl sub, I tried to extract the array elements as: foreach my $row (@recs) { my $id=$row-id; my $name=$row-Name; print MYFILE recs name: $name, id: $id\n\n; } and I can see the Name element for example. I tried to insert the DBIC_TRACE in the sub ouputting it to a file but it's always empty ( $self-db-storage-debugfh(IO::File-new('file','w'));), is there another way to use it ? 2013/4/9 Peter Rabbitson rabbit+d...@rabbit.us On Tue, Apr 09, 2013 at 03:19:07PM +0200, max wrote: Hi all, I'm new to DBIx, I'm trying to retrieve only a subset of columns from a result set: my @recs=$self-db-resultset($self-table)-search({},{columns = [qw/ id Name OperationId Name /],},)-all; The above looks correct but the result contains all the columns, How did you determine this? Also what does the DBIC_TRACE=1 look like? Cheers ___ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk ___ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
Re: [Dbix-class] select specific columns on resultset
On Tue, Apr 09, 2013 at 03:58:53PM +0200, max wrote: Thanks for the answer, this piece of code is inside a perl sub, I tried to extract the array elements as: foreach my $row (@recs) { my $id=$row-id; my $name=$row-Name; print MYFILE recs name: $name, id: $id\n\n; } and I can see the Name element for example. Well... you asked for it didn't you? (in fact you asked twice) columns = [qw/id Name OperationId Name /] I am at this point confused what is your problem exactly... I tried to insert the DBIC_TRACE in the sub ouputting it to a file but it's always empty ( $self-db-storage-debugfh(IO::File-new('file','w'));), is there another way to use it ? When you use it this way you also need to -storage-debug(1) for things to start working. During debugging DBIC_TRACE=1 with dump to screen is much more common, hence why noone answered quuckly ;) Cheers ___ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk