[Dbix-class] Announcing DBIx::Class 0.08198

Bill Moseley moseley at hank.org
Tue Aug 7 15:07:58 GMT 2012


On Tue, Aug 7, 2012 at 6:24 AM, Arthur Axel 'fREW' Schmidt <frioux at 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 <
> frioux at 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 at 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 =3D> 10,
>      is_nullable =3D> 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 at 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 =3D DBICTest->init_schema();
>
>  plan tests =3D> 7;
>
>  # Bug between .08196 and .08198 resulted in a prefetch setting
> _inflated_column undefined.
>
>  # Grab any track.
> my $search_track =3D $schema->resultset( 'Track' )->search( {}, { rows =
=3D> 1
> } )->first;
>
>  ok( $search_track, 'Fetched a track' );
>
>  my $track_id =3D $search_track->trackid;
> ok( $track_id, "Feteched track id '$track_id'" );
>
>  my $track =3D $schema->resultset( 'Track' )->search(
>     {
>         'me.trackid' =3D> $track_id,
>     },
>     {
>         prefetch =3D> [
>             { cd =3D> 'artist' },
>         ],
>     },
> )->first;
>
>  my $cd =3D $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 <frioux at 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_colu=
mn
>> >> 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 =3D $schema->resultset( 'Paper' )->search(
>> >>     { 'me.id' =3D> $id },
>> >>     {
>> >>         prefetch =3D> [
>> >>             { assignment =3D> 'class' },
>> >>         ],
>> >>     }
>> >> )->first;
>> >>
>> >> my $assignment =3D $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 =3D {
>> >>           'class' =3D> 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
>> >> 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
>>
>
>
>
>  --
> Bill Moseley
> moseley at 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
>
>
>
> _______________________________________________
> 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
>



-- =

Bill Moseley
moseley at hank.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20120807/411=
43faf/attachment-0001.htm


More information about the DBIx-Class mailing list