mirror of
https://github.com/DBD-SQLite/DBD-SQLite
synced 2025-06-08 14:48:32 -04:00
applied a fix by Kenneth Kroenlein to support named primary key (RT 95511), and added some tests
This commit is contained in:
parent
ff8699f4f7
commit
354d07f61f
2 changed files with 34 additions and 3 deletions
|
@ -459,6 +459,7 @@ sub primary_key_info {
|
|||
}
|
||||
}
|
||||
|
||||
my $key_name = $row->{sql} =~ /\bCONSTRAINT\s+(\S+|"[^"]+")\s+PRIMARY\s+KEY\s*\(/i ? $1 : 'PRIMARY KEY';
|
||||
my $key_seq = 0;
|
||||
foreach my $pk_field (@pk) {
|
||||
push @pk_info, {
|
||||
|
@ -466,7 +467,7 @@ sub primary_key_info {
|
|||
TABLE_NAME => $tbname,
|
||||
COLUMN_NAME => $pk_field,
|
||||
KEY_SEQ => ++$key_seq,
|
||||
PK_NAME => 'PRIMARY KEY',
|
||||
PK_NAME => $key_name,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ use t::lib::Test qw/connect_ok/;
|
|||
use Test::More;
|
||||
use Test::NoWarnings;
|
||||
|
||||
plan tests => (5 * 5) + (3 * 6 + 1) + 1;
|
||||
plan tests => (5 * 5) + (3 * 6 + 1) + (5 * 2) + 1;
|
||||
|
||||
for my $quote ('', qw/' " ` []/) {
|
||||
my ($begin_quote, $end_quote) = (substr($quote, 0, 1), substr($quote, -1, 1));
|
||||
|
@ -87,4 +87,34 @@ for my $quote ('', qw/' " ` []/) {
|
|||
is $pk_info[0]{TABLE_SCHEM} => 'temp', "scheme is correct";
|
||||
is $pk_info[0]{COLUMN_NAME} => 'tmp', "pk name is correct";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
my $dbh = connect_ok();
|
||||
$dbh->do("create table foo (id integer, text text, primary key (id))");
|
||||
|
||||
{
|
||||
my $sth = $dbh->primary_key_info(undef, undef, 'foo');
|
||||
my @pk_info;
|
||||
while(my $row = $sth->fetchrow_hashref) { push @pk_info, $row };
|
||||
is @pk_info => 1, "found 1 pk in a table";
|
||||
is $pk_info[0]{TABLE_SCHEM} => 'main', "scheme is correct";
|
||||
is $pk_info[0]{COLUMN_NAME} => 'id', "pk name is correct";
|
||||
is $pk_info[0]{PK_NAME} => 'PRIMARY KEY', "pk name is correct";
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
my $dbh = connect_ok();
|
||||
$dbh->do("create table foo (id integer, text text, constraint bar primary key (id))");
|
||||
|
||||
{
|
||||
my $sth = $dbh->primary_key_info(undef, undef, 'foo');
|
||||
my @pk_info;
|
||||
while(my $row = $sth->fetchrow_hashref) { push @pk_info, $row };
|
||||
is @pk_info => 1, "found 1 pk in a table";
|
||||
is $pk_info[0]{TABLE_SCHEM} => 'main', "scheme is correct";
|
||||
is $pk_info[0]{COLUMN_NAME} => 'id', "pk name is correct";
|
||||
is $pk_info[0]{PK_NAME} => 'bar', "pk name is correct";
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue