I suspect that it's due more to the database normalising the column name
before the DBD even sees it. Try this statement instead:
select 1 as "CamelCase"
On 28/02/17 20:26, Jonas B. Nielsen wrote:
Hi Nomad,
Thanks a lot.
This is what I need, but not what I am observing. I will do some more testing,
with the FetchHashKeyName set to NAME against SQLite. Then I will try to redo
the test against Oracle, I know DBD::Oracle defaults to uppercase, so I might
not be able to skip my translation dictionary anyway if NAME is not supported
and works as for DBD::SQLite
I reread the section on the docs
(https://metacpan.org/pod/DBI#FetchHashKeyName), and now it makes sense.
IMHO that NAME preserves casing is not completely clear due to the focus on
NAME_uc and NAME_lc and recommendation on their use.
Anyway thanks for the push in the right direction.
jonasbn
On 28 Feb 2017, at 21:13, no...@null.net wrote:
On Tue Feb 28, 2017 at 07:37:17PM +0100, Jonas B. Nielsen wrote:
- Would it be possible to have FetchHashKeyName preserve case? so if
a database was using camelCase this would be preserved.
A quick test seems to produce what you are looking for with the default
setting of "NAME":
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
use DBI;
my $db = DBI->connect('dbi:SQLite:db=:memory:');
my $sth = $db->prepare(q{SELECT 1 AS CamelCase});
$sth->execute;
print Dumper( $sth->fetchrow_hashref );
# Output is:
# $VAR1 = {
# 'CamelCase' => 1
# };
What kind of behaviour were you expecting?
Mark
--
Mark Lawrence
—
pauseid: JONASBN
email: jona...@cpan.org
twitter: @jonasbn
blog: https://lastmover.wordpress.com/