<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 25, 2015 at 10:59 PM, Darren Duncan <span dir="ltr">&lt;<a href="mailto:darren@darrenduncan.net" target="_blank">darren@darrenduncan.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Augustus, what is the problem with DBIC stringifying numeric values?  That ensures full precision and in particular when you want to use them as numbers you can just do so, Perl does that automatically. -- Darren Duncan</blockquote><div><br></div><div>One example of it being a problem is when converting row objects to JSON. Javascripts === operator, for example, evaluates to false for for 42 === &quot;42&quot;.</div><div><br></div><div>/L</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><br>
<br>
On 2015-02-25 1:15 PM, Augustus Saunders wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
For reasons unknown to us, DBIx is stringifying numeric values somewhere along the way. In order to ensure they come out numeric, we made this small patch:<br>
<br>
--- a/lib/perl5/DBIx/Class/Row.pm<br>
+++ b/lib/perl5/DBIx/Class/Row.pm<br>
@@ -661,10 +661,15 @@ To retrieve all loaded column values as a hash, use L&lt;/get_columns&gt;.<br>
  sub get_column {<br>
    my ($self, $column) = @_;<br>
    $self-&gt;throw_exception( &quot;Can&#39;t fetch data as class method&quot; ) unless ref $self;<br>
-  return $self-&gt;{_column_data}{$column} if exists $self-&gt;{_column_data}{$column}<u></u>;<br>
+  if (exists $self-&gt;{_column_data}{$column}<u></u>) {<br>
+    return 0 + $self-&gt;{_column_data}{$column} if $self-&gt;_is_column_numeric($<u></u>column);<br>
+    return $self-&gt;{_column_data}{$column}<u></u>;<br>
+  }<br>
    if (exists $self-&gt;{_inflated_column}{$<u></u>column}) {<br>
-    return $self-&gt;store_column($column,<br>
+    my $ret = $self-&gt;store_column($column,<br>
        $self-&gt;_deflated_column($<u></u>column, $self-&gt;{_inflated_column}{$<u></u>column}));<br>
+    return 0 + $ret if $self-&gt;_is_column_numeric($<u></u>column);<br>
+    return $ret;<br>
    }<br>
    $self-&gt;throw_exception( &quot;No such column &#39;${column}&#39;&quot; ) unless $self-&gt;has_column($column);<br>
    return undef;<br>
<br>
If there&#39;s a better way to do this, or some way to prevent DBIx from stringifying the values in the first place, that would be nice to know too. Thanks-<br>
<br>
Augustus<br>
</blockquote>
<br>
<br>
______________________________<u></u>_________________<br>
List: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class" target="_blank">http://lists.scsys.co.uk/cgi-<u></u>bin/mailman/listinfo/dbix-<u></u>class</a><br>
IRC: <a href="http://irc.perl.org#dbix-class" target="_blank">irc.perl.org#dbix-class</a><br>
SVN: <a href="http://dev.catalyst.perl.org/repos/bast/DBIx-Class/" target="_blank">http://dev.catalyst.perl.org/<u></u>repos/bast/DBIx-Class/</a><br>
Searchable Archive: <a href="http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk" target="_blank">http://www.grokbase.com/group/<u></u>dbix-class@lists.scsys.co.uk</a><br>
</div></div></blockquote></div><br></div></div>