[Dbix-class] Getting numeric columns as numeric values

Lasse Makholm lasse at unity3d.com
Wed Feb 25 22:43:00 GMT 2015


On Wed, Feb 25, 2015 at 10:59 PM, Darren Duncan <darren at darrenduncan.net>
wrote:

> 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


One example of it being a problem is when converting row objects to JSON.
Javascripts === operator, for example, evaluates to false for for 42 ===
"42".

/L



>
> On 2015-02-25 1:15 PM, Augustus Saunders wrote:
>
>> 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:
>>
>> --- a/lib/perl5/DBIx/Class/Row.pm
>> +++ b/lib/perl5/DBIx/Class/Row.pm
>> @@ -661,10 +661,15 @@ To retrieve all loaded column values as a hash, use
>> L</get_columns>.
>>   sub get_column {
>>     my ($self, $column) = @_;
>>     $self->throw_exception( "Can't fetch data as class method" ) unless
>> ref $self;
>> -  return $self->{_column_data}{$column} if exists
>> $self->{_column_data}{$column};
>> +  if (exists $self->{_column_data}{$column}) {
>> +    return 0 + $self->{_column_data}{$column} if
>> $self->_is_column_numeric($column);
>> +    return $self->{_column_data}{$column};
>> +  }
>>     if (exists $self->{_inflated_column}{$column}) {
>> -    return $self->store_column($column,
>> +    my $ret = $self->store_column($column,
>>         $self->_deflated_column($column, $self->{_inflated_column}{$
>> column}));
>> +    return 0 + $ret if $self->_is_column_numeric($column);
>> +    return $ret;
>>     }
>>     $self->throw_exception( "No such column '${column}'" ) unless
>> $self->has_column($column);
>>     return undef;
>>
>> If there'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-
>>
>> Augustus
>>
>
>
> _______________________________________________
> 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 at lists.scsys.co.uk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20150225/ac0d05e2/attachment.htm>


More information about the DBIx-Class mailing list