Common to all DBD me thinks.  Me thinks you only get in or out scalars (ie 
strings) unless you tell your DBD differently
 
I think you have to use  $sth->bind_co
 
 
to get your int back as an int try something like this
 $sth->bind_col(1, undef, { TYPE => SQL_INTEGER });
hope this helps
 
> From: b...@wards.net
> Date: Fri, 25 Feb 2011 17:56:59 -0800
> Subject: Re: Numeric and string columns.
> To: mose...@hank.org
> CC: dbi-users@perl.org
> 
> Sounds like DBD::Pg should know better than to do that!
> But then, DBD::mysql has the same problem. So maybe it is at the DBI level?
> 
> On Fri, Feb 25, 2011 at 5:50 PM, Bill Moseley <mose...@hank.org> wrote:
> 
> > Columns coming from DBD::Pg seems to all be Perl strings and then when I
> > encode to json then end up quoted:
> >
> > music=# \d cd;
> > Table "public.cd"
> > Column | Type | Modifiers
> > ---------+---------+-------------------------------------------------
> > id | integer | not null default nextval('cd_id_seq'::regclass)
> > year | integer |
> > name | text |
> > artist | integer | not null
> > deleted | boolean | not null default false
> > Indexes:
> > "cd_pkey" PRIMARY KEY, btree (id)
> >
> >
> > my $x = $dbh->selectrow_hashref( "select * from cd where id = 1" );
> > $x->{foo} = 0;
> >
> > print Dumper $x;
> > print encode_json( $x );
> >
> > Results in:
> >
> > $VAR1 = {
> > 'artist' => '1',
> > 'name' => 'One first CD',
> > 'foo' => 0,
> > 'deleted' => '0',
> > 'id' => '1',
> > 'year' => '2010'
> > };
> > {"artist":"1","name":"One first
> > CD","foo":0,"deleted":"0","id":"1","year":"2010"}
> >
> > Notice how the deleted boolean and integer columns are quoted, but the
> > "foo"
> > I injected is not quoted?
> >
> > In a javascript library we are using it's seeing the deleted value as true.
> > So, I'm curious if I can make DBI (or DBD::Pg) return the non-text columns
> > looking like numbers to Perl.
> >
> > I suppose I could do something silly like:
> >
> > /^\d+$/ && ($_ += 0) for values %{$x};
> >
> >
> > which then returns:
> >
> > {"artist":1,"name":"One first CD","foo":0,"deleted":0,"id":1,"year":2010}
> >
> > --
> > Bill Moseley
> > mose...@hank.org
> >
> 
> 
> 
> -- 
> Check out my LEGO blog at http://www.brickpile.com/
> View my photos at http://flickr.com/photos/billward/
> Follow me at http://twitter.com/williamward
                                          

Reply via email to