They are in a branch called topic/prefetch_tests.  We do have *one*
test, but it sounds like there may be other bugs, which is why I'd like
to get tests from you and eric :)


On 08/07/2012 10:07 AM, Bill Moseley wrote:
>
>
> On Tue, Aug 7, 2012 at 6:24 AM, Arthur Axel 'fREW' Schmidt
> <fri...@gmail.com <mailto:fri...@gmail.com>> wrote:
>
>     Yeah, the fix is in the new devrel that castaway shipped.  If you
>     could join irc we could help you make the test more. 
>
>
> test more... ? 
>
> I'd love help with that -- but I'm not sure when I'll have time to to
> catch you on irc.   I'll give the dev release a try -- but those fixes
> are not in git master yet?
>  
>
>
>     On 08/04/2012 06:46 PM, Bill Moseley wrote:
>>
>>     On Thu, Aug 2, 2012 at 6:25 AM, Arthur Axel 'fREW' Schmidt
>>     <fri...@gmail.com <mailto:fri...@gmail.com>> wrote:
>>
>>         Any chance we could get an ETA on this test?  the 0.08199
>>         release is
>>         blocking on it.
>>
>>
>>     Do you have a fix for this already?   That is, do you know what
>>     the issue is?   Otherwise, I'm a bit stuck.
>>
>>     I wrote a new unit test (below) for DBIC, but the test passed.
>>
>>     So, I went back to my app and started cutting out code until I
>>     had just three Result classes, and very simple DBIC setup.
>>
>>     What I finally found was when I removed a column named "source"
>>     the problem went away.   Red herring, I'm not sure.
>>
>>     Wish I had something better to offer.   I made the following
>>     changes and then I added the test below, but tests pass.  Any
>>     suggestion what else to try?
>>
>>     I'm using PostgreSQL 9.0.4 on OS X and DBIx::Class from git.  On
>>     my table "source" is "smallint" but there are many columns like
>>     that on that table.
>>
>>
>>     moseley@bair ~/DBIx-Class $ git diff
>>     diff --git a/t/lib/DBICTest/Schema/Artist.pm
>>     b/t/lib/DBICTest/Schema/Artist.pm
>>     index 2e9ff35..21179da 100644
>>     --- a/t/lib/DBICTest/Schema/Artist.pm
>>     +++ b/t/lib/DBICTest/Schema/Artist.pm
>>     @@ -29,6 +29,7 @@ __PACKAGE__->add_columns(
>>          size => 10,
>>          is_nullable => 1,
>>        },
>>     +  'source',
>>      );
>>      __PACKAGE__->set_primary_key('artistid');
>>      __PACKAGE__->add_unique_constraint(['name']);
>>     diff --git a/t/lib/sqlite.sql b/t/lib/sqlite.sql
>>     index 9d49210..2077463 100644
>>     --- a/t/lib/sqlite.sql
>>     +++ b/t/lib/sqlite.sql
>>     @@ -10,7 +10,8 @@ CREATE TABLE artist (
>>        artistid INTEGER PRIMARY KEY NOT NULL,
>>        name varchar(100),
>>        rank integer NOT NULL DEFAULT 13,
>>     -  charfield char(10)
>>     +  charfield char(10),
>>     +  source integer
>>      );
>>      
>>      CREATE INDEX artist_name_hookidx ON artist (name);
>>
>>
>>
>>
>>     moseley@bair ~/DBIx-Class $ cat
>>     t/prefetch/undefined_inflaged_column.t 
>>     use warnings;
>>     use strict;
>>
>>     use Test::More;
>>     use lib qw(t/lib);
>>     use DBICTest;
>>
>>     my $schema = DBICTest->init_schema();
>>
>>     plan tests => 7;
>>
>>     # Bug between .08196 and .08198 resulted in a prefetch setting
>>     _inflated_column undefined.
>>
>>     # Grab any track.
>>     my $search_track = $schema->resultset( 'Track' )->search( {}, {
>>     rows => 1 } )->first;
>>
>>     ok( $search_track, 'Fetched a track' );
>>
>>     my $track_id = $search_track->trackid;
>>     ok( $track_id, "Feteched track id '$track_id'" );
>>
>>     my $track = $schema->resultset( 'Track' )->search(
>>         {
>>             'me.trackid' => $track_id,
>>         },
>>         {
>>             prefetch => [
>>                 { cd => 'artist' },
>>             ],
>>         },
>>     )->first;
>>
>>     my $cd = $track->cd;
>>     ok( $cd, 'Found CD object' );
>>     is( ref $cd->{_inflated_column}, 'HASH', 'Found _inflated_column
>>     hashref' );
>>
>>     ok( exists $cd->{_inflated_column}{artist}, 'Found inflated
>>     "artist" key' );
>>
>>     # This is where it fails
>>     ok( defined $cd->{_inflated_column}{artist}, 'Inflated "artist"
>>     is defined' );
>>     ok( $cd->artist,  'The artist should be defined (or an artist)' );
>>
>>
>>
>>
>>      
>>
>>
>>      
>>
>>
>>         On 08/01/2012 09:36 AM, Arthur Axel 'fREW' Schmidt wrote:
>>         > Bill,
>>         >
>>         > Could you please write a test that fails on 0.08198 but
>>         passes on
>>         > 0.08198_01?  DBIC has a quite fully fleshed out test schema
>>         so I doubt
>>         > it should be difficult.  We *do* want to add the features
>>         in eventually
>>         > that were taken out in the dev rel so unless we get tests
>>         for these
>>         > regressions they will regress again :)
>>         >
>>         > (I know this is a near copy paste of a previous message,
>>         but the issues
>>         > may be subtly different)
>>         >
>>         > On 07/14/2012 05:53 PM, Bill Moseley wrote:
>>         >> On Tue, Jul 10, 2012 at 7:59 PM, fREW Schmidt
>>         <fri...@gmail.com <mailto:fri...@gmail.com>> wrote:
>>         >>
>>         >>>     * Fixes
>>         >>>         - Fix complex has_many prefetch with resultsets
>>         not selecting
>>         >>> identity
>>         >>>           columns from the root result source
>>         >>>
>>         >> I'm wondering if this is related to a problem I'm seeing
>>         in this version
>>         >> where a column listed in _inflated_column is undefined.
>>         >>
>>         >>
>>         >> I've upgraded to SQL::Abstract 1.73 for both versions of
>>         DBIC below.
>>         >>
>>         >> In 0.08196 I don't see the problem (I can't upgraded to
>>         .08197).
>>         >>
>>         >> In 0.08198 what happens is I end up with a row with an
>>         _inflated_column
>>         >> with the column undef.
>>         >> In  0.08196 _inflated_column is a row object.
>>         >>
>>         >> For example, if I'm modeling school work -- if a class has
>>         many
>>         >> assignments, and an assignment has many papers, then:
>>         >>
>>         >>
>>         >> my $paper = $schema->resultset( 'Paper' )->search(
>>         >>     { 'me.id <http://me.id>' => $id },
>>         >>     {
>>         >>         prefetch => [
>>         >>             { assignment => 'class' },
>>         >>         ],
>>         >>     }
>>         >> )->first;
>>         >>
>>         >> my $assignment = $paper->assignment;
>>         >> warn Dumper $assignment->{_inflated_column};
>>         >>
>>         >> print $assignment->class->id;
>>         >>
>>         >>
>>         >> # in .08198 $assignment->{_inflated_column}{class} is
>>         undefined
>>         >> # in .08196 $assignment->{_inflated_column}{class} is a
>>         class row object.
>>         >>
>>         >>
>>         >> Which results in:
>>         >>
>>         >> $VAR1 = {
>>         >>           'class' => undef
>>         >>         };
>>         >> Can't call method "id" on an undefined value ....
>>         >>
>>         >>
>>         >> If I revert to 96 then "class" references a
>>         ::Result::Class object.
>>         >>
>>         >>
>>         >> Is this a know issue?
>>         >>
>>         >>
>>         >>
>>         >>
>>         >>
>>         >> _______________________________________________
>>         >> List:
>>         http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
>>         >> IRC: irc.perl.org#dbix-class <http://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 <http://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
>>
>>
>>
>>
>>     -- 
>>     Bill Moseley
>>     mose...@hank.org <mailto:mose...@hank.org>
>>
>>
>>     _______________________________________________
>>     List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
>>     IRC: irc.perl.org#dbix-class <http://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 <http://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
>
>
>
>
> -- 
> Bill Moseley
> mose...@hank.org <mailto:mose...@hank.org>
>
>
> _______________________________________________
> 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

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
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

Reply via email to