<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">I've been throwing away some old code and replacing it with DeploymentHandler. &nbsp;All my old hand-written SQL files are being replaced by Perl which uses DBIC to populate the database.<div><br></div><div>One of those functions to populate the database didn't work right. &nbsp;Eventually, I boiled it down to an standalone test, which still fails in a way I didn't expect. &nbsp;I'm not sure if I'm doing something wrong, or if I've missed something in the docs, or if there's a lurking bug.</div><div><br></div><div>What I'm seeing is that if I call populate() with a data structure where the first item does not reference other tables, none of the other items in the data structure will create items in referenced tables. &nbsp;If the first item does refer to other tables, all other references will get created as I expected.</div><div><br></div><div>My sample has two simple tables:</div><div><br></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><font face="Courier New">package TestDb::Schema::Result::Artist;</font></div></div><div><div><font face="Courier New"><br></font></div></div><div><div><font face="Courier New">use Moose;</font></div></div><div><div><font face="Courier New">use MooseX::NonMoose;</font></div></div><div><div><font face="Courier New">use MooseX::MarkAsMethods autoclean =&gt; 1;</font></div></div><div><div><font face="Courier New">extends 'DBIx::Class::Core';</font></div></div><div><div><font face="Courier New"><br></font></div></div><div><div><font face="Courier New">__PACKAGE__-&gt;table ('artist');</font></div></div><div><div><font face="Courier New"><br></font></div></div><div><div><font face="Courier New">__PACKAGE__-&gt;add_columns (</font></div></div><div><div><font face="Courier New">&nbsp; id =&gt; {</font></div></div><div><div><font face="Courier New">&nbsp; &nbsp; data_type =&gt; 'int',</font></div></div><div><div><font face="Courier New">&nbsp; &nbsp; is_auto_increment =&gt; 1,</font></div></div><div><div><font face="Courier New">&nbsp; },</font></div></div><div><div><font face="Courier New">&nbsp; name =&gt; {</font></div></div><div><div><font face="Courier New">&nbsp; &nbsp; data_type =&gt; 'varchar',</font></div></div><div><div><font face="Courier New">&nbsp; },</font></div></div><div><div><font face="Courier New">);</font></div></div><div><div><font face="Courier New"><br></font></div></div><div><div><font face="Courier New">__PACKAGE__-&gt;set_primary_key ('id');</font></div></div><div><div><font face="Courier New"><br></font></div></div><div><div><font face="Courier New">__PACKAGE__-&gt;has_many (cds =&gt; 'TestDb::Schema::Result::CD', 'artist_id');</font></div></div><div><div><font face="Courier New"><br></font></div></div><div><div><font face="Courier New">__PACKAGE__-&gt;meta-&gt;make_immutable;</font></div></div><div><div><font face="Courier New"><br></font></div></div><div><div><font face="Courier New">1;</font></div></div></blockquote><div><br></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><font face="Courier New">package TestDb::Schema::Result::CD;</font></div></div><div><div><font face="Courier New">&nbsp;</font></div></div><div><div><font face="Courier New">use Moose;</font></div></div><div><div><font face="Courier New">use MooseX::NonMoose;</font></div></div><div><div><font face="Courier New">use MooseX::MarkAsMethods autoclean =&gt; 1;</font></div></div><div><div><font face="Courier New">extends 'DBIx::Class::Core';</font></div></div><div><div><font face="Courier New">&nbsp;</font></div></div><div><div><font face="Courier New">__PACKAGE__-&gt;table ('cd');</font></div></div><div><div><font face="Courier New">&nbsp;</font></div></div><div><div><font face="Courier New">__PACKAGE__-&gt;add_columns ( &nbsp;&nbsp;</font></div></div><div><div><font face="Courier New">&nbsp; id =&gt; {</font></div></div><div><div><font face="Courier New">&nbsp; &nbsp; data_type =&gt; 'int',</font></div></div><div><div><font face="Courier New">&nbsp; &nbsp; is_auto_increment =&gt; 1,</font></div></div><div><div><font face="Courier New">&nbsp; },</font></div></div><div><div><font face="Courier New">&nbsp; title =&gt; {</font></div></div><div><div><font face="Courier New">&nbsp; &nbsp; data_type =&gt; 'varchar',</font></div></div><div><div><font face="Courier New">&nbsp; },</font></div></div><div><div><font face="Courier New">&nbsp; artist_id =&gt; {</font></div></div><div><div><font face="Courier New">&nbsp; &nbsp; data_type =&gt; 'int',</font></div></div><div><div><font face="Courier New">&nbsp; },</font></div></div><div><div><font face="Courier New">);</font></div></div><div><div><font face="Courier New">&nbsp;</font></div></div><div><div><font face="Courier New">__PACKAGE__-&gt;set_primary_key ('id');</font></div></div><div><div><font face="Courier New">&nbsp;</font></div></div><div><div><font face="Courier New">__PACKAGE__-&gt;belongs_to (artist =&gt; 'TestDb::Schema::Result::Artist', 'artist_id');</font></div></div><div><div><font face="Courier New"><br></font></div></div><div><div><font face="Courier New">__PACKAGE__-&gt;meta-&gt;make_immutable;</font></div></div><div><div><font face="Courier New"><br></font></div></div><div><div><font face="Courier New">1;</font></div></div></blockquote><div><div><br></div></div><div>Simple as I could make it.</div><div><br></div><div>When I call populate with data like this, everything works:</div><div><br></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><font face="Courier New">$schema-&gt;resultset('Artist')-&gt;populate([</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                </span>name =&gt; 'The Beatles',</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                </span>cds =&gt; [</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                        </span>{ title =&gt; "Sgt. Pepper's Lonely Hearts Club Band" },</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                        </span>{ title =&gt; "Yellow Submarine" },</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                        </span>{ title =&gt; "Rubber Soul" },</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                        </span>{ title =&gt; "Meet the Beatles" },</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                </span>],</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">        </span>},</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                </span>name =&gt; 'ABBA',</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                </span>cds =&gt; [</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                        </span>{ title =&gt; 'ABBA Gold' },</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                        </span>{ title =&gt; 'More ABBA Gold '},</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">                </span>],</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">        </span>},</font></div></div><div><div><font face="Courier New"><span class="Apple-tab-span" style="white-space:pre">        </span>{ name =&gt; 'Anonymous' },</font></div></div><div><div><font face="Courier New">]);</font></div></div></blockquote><div><br></div><div>This creates an artist called "The Beatles", and CDs called "Sgt. Pepper's Lonely Hearts Club Band", "Yellow Submarine", "Rubber Soul", and "Meet the Beatles", all referring to the right artist_id for the newly-created "The Beatles" artist. &nbsp;An artist called ABBA is created, as are both of those greatest hits CDs. &nbsp;An an "Anonymous" artist is created with no CDs.</div><div><br></div><div>Perfect!</div><div><br></div><div>But, if I move the {name =&gt; 'Anonymous}, first, before any of the others, the behavior is quite different. &nbsp;None of the CDs get created, just the artists. &nbsp;There's no errors, no complaints, just no entries in the related tables.</div><div><br></div><div>Not what I expected.</div><div><br></div><div>Can anyone shed some light on this? &nbsp;Any thoughts are appreciated!</div><div><br></div><div>I have full working code if someone wants me to put a tar file somewhere.</div><div><br></div></body></html>