<div dir="ltr"><div>It seems DBIx::Class::InflateColumn::DateTime does not update the inflated column value on: <font face="monospace, monospace">$row-&gt;update({ ts_column =&gt; undef })</font></div><div><br><div>Given:</div><div><br></div><div><font face="monospace, monospace">CREATE TABLE `foo` (</font></div><div><font face="monospace, monospace">  `id` bigint(20) NOT NULL AUTO_INCREMENT,</font></div><div><font face="monospace, monospace">  `ts` timestamp NULL DEFAULT NULL,</font></div><div><font face="monospace, monospace">  PRIMARY KEY (`id`)</font></div><div><font face="monospace, monospace">) ENGINE=InnoDB;</font></div><div><br></div><div>Doing:</div><div><br></div><div><font face="monospace, monospace">package My::Schema;</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">use DateTime;</font></div><div><font face="monospace, monospace">use base qw(DBIx::Class::Schema::Loader);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">__PACKAGE__-&gt;loader_options(</font></div><div><font face="monospace, monospace"><span class="" style="white-space:pre">        </span>components =&gt; [qw(InflateColumn::DateTime)],</font></div><div><font face="monospace, monospace"><span class="" style="white-space:pre">        </span>naming =&gt; &quot;current&quot;,</font></div><div><font face="monospace, monospace">);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">package main;</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">my $schema = My::Schema-&gt;connect(&quot;dbi:mysql:test&quot;);</font></div><div><font face="monospace, monospace">$schema-&gt;storage-&gt;debug(1);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">print &quot;create&quot;;</font></div><div><font face="monospace, monospace">my $foo = $schema-&gt;resultset(&#39;Foo&#39;)-&gt;create({ ts =&gt; DateTime-&gt;now });</font></div><div><font face="monospace, monospace">print &quot;ts = &quot;, defined($foo-&gt;ts) ? $foo-&gt;ts : &#39;null&#39;;</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">print &quot;update({ ts =&gt; undef })&quot;;</font></div><div><font face="monospace, monospace">$foo-&gt;update({ ts =&gt; undef });</font></div><div><font face="monospace, monospace">print &quot;ts = &quot;, defined($foo-&gt;ts) ? $foo-&gt;ts : &#39;null&#39;;</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">print &quot;discard_changes&quot;;</font></div><div><font face="monospace, monospace">$foo-&gt;discard_changes;</font></div><div><font face="monospace, monospace">print &quot;ts = &quot;, defined($foo-&gt;ts) ? $foo-&gt;ts : &#39;null&#39;;</font></div><div><br></div><div>Yields:</div><div><br></div><div><font face="monospace, monospace">create</font></div><div><font face="monospace, monospace">BEGIN WORK</font></div><div><font face="monospace, monospace">INSERT INTO `foo` ( `ts`) VALUES ( ? ): &#39;2015-05-22 19:44:54&#39;</font></div><div><font face="monospace, monospace">COMMIT</font></div><div><font face="monospace, monospace">ts = 2015-05-22T19:44:54</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">update({ ts =&gt; undef })</font></div><div><font face="monospace, monospace">UPDATE `foo` SET `ts` = ? WHERE ( `id` = ? ): NULL, &#39;16&#39;</font></div><div><font face="monospace, monospace">ts = 2015-05-22T19:44:54</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">discard_changes</font></div><div><font face="monospace, monospace">SELECT `me`.`id`, `me`.`ts` FROM `foo` `me` WHERE ( `me`.`id` = ? ): &#39;16&#39;</font></div><div><font face="monospace, monospace">ts = null</font></div><div><font face="monospace, monospace"><br></font></div><div>I would have expected the inflated column value to be updated on update({ ... }).</div></div><div><br></div><div>Passing a DateTime object instead of undef does update the inflated column value appropriately.</div><div>And doing:</div><div><br></div><div><font face="monospace, monospace">$row-&gt;ts_column(undef);</font></div><div><font face="monospace, monospace">$row-&gt;update();</font></div><div><br></div><div>...(obviously) works as expected too.</div><div><br></div><div>Is this a known bug or by design? Or am I simply missing something?</div><div><br></div><div>Thanx</div><div>/L</div></div>