From a5971edfab20f689ce65f1b4631dc15e6731a1b9 Mon Sep 17 00:00:00 2001 From: Kenichi Ishigaki Date: Thu, 11 Feb 2010 12:08:07 +0000 Subject: [PATCH] dequote primary key info to resolve #45113 --- lib/DBD/SQLite.pm | 1 + t/42_primary_key_info.t | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 t/42_primary_key_info.t diff --git a/lib/DBD/SQLite.pm b/lib/DBD/SQLite.pm index 2dd332c..60c140c 100644 --- a/lib/DBD/SQLite.pm +++ b/lib/DBD/SQLite.pm @@ -360,6 +360,7 @@ sub primary_key_info { } my $key_seq = 0; foreach my $pk_field (@pk) { + $pk_field =~ s/(["'`])(.+)\1/$2/; # dequote push @pk_info, { TABLE_SCHEM => $row->{TABLE_SCHEM}, TABLE_NAME => $row->{TABLE_NAME}, diff --git a/t/42_primary_key_info.t b/t/42_primary_key_info.t new file mode 100644 index 0000000..6e00765 --- /dev/null +++ b/t/42_primary_key_info.t @@ -0,0 +1,27 @@ +#!/usr/bin/perl + +use strict; +BEGIN { + $| = 1; + $^W = 1; +} + +use t::lib::Test qw/connect_ok/; +use Test::More; +use Test::NoWarnings; + +plan tests => 4 * 5 + 1; + +for my $quote ('', qw/' " `/) { + my $dbh = connect_ok( RaiseError => 1 ); + ok $dbh->do( + "create table ${quote}foo${quote} (${quote}id${quote} integer primary key)" + ); + my $sth = $dbh->primary_key_info(undef, undef, 'foo'); + my $pk = $sth->fetchrow_hashref; + ok $pk->{TABLE_NAME} eq 'foo'; # dequoted + ok $pk->{COLUMN_NAME} eq 'id'; # dequoted + + ($pk) = $dbh->primary_key(undef, undef, 'foo'); + ok $pk eq 'id'; +}