Re: [CDBI] Deep recursion
"Arshavir Grigorian" <[email protected]> Tue, 7 Aug 2007 21:48:28 -0700
| Newsgroups | gmane.comp.lang.perl.modules.class-dbi |
|---|---|
| Message-ID | <[email protected]> |
On 8/7/07, Michael G Schwern <[email protected]> wrote: > Arshavir Grigorian wrote: > > Hi, > > > > I have a table with a primary key called "id". When I make an insert > > into that table, then try to get the primary key, I get into deep > > recursion: > > > > __PACKAGE__->table('tab'); > > __PACKAGE__->columns(Primary => 'id'); > > __PACKAGE__->columns(All => qw/id .../); > > > > ... > > > > my $obj = TAB->insert($href); > > my $id = $obj->id; > > > > And in the logs, I see a lot of: > > > > Class::DBI::_flesh('TAB=HASH(0x9102a08)', 'Primary') called at > > /usr/local/share/perl/5.8.7/Class/DBI.pm line 844 > > Class::DBI::get('TAB=HASH(0x9102a08)', 'id') called at > > /usr/local/share/perl/5.8.7/Class/Accessor.pm line 393 > > Class::Accessor::__ANON__('TAB=HASH(0x9102a08)') called at > > /usr/local/share/perl/5.8.7/Class/DBI.pm line 857 > > If you name a column accessor "id" it blows over the very important built-in > method "id". Granted it would be nice if it warned you about this very common > mistake. > > The following covers how to map columns to differently named accessors. > http://search.cpan.org/~tmtm/Class-DBI-v3.0.16/lib/Class/DBI.pm#Changing_Your_Column_Accessor_Method_Names > Also, I noticed that this problem occurs only on objects that have just been created/inserted (vs objects that one gets through a retrieve/search operation). $obj = TAB->retrieve(...); $obj->id; - works fine.