Author: turnstep
Date: Mon May 18 10:53:47 2009
New Revision: 12779

Modified:
   DBD-Pg/trunk/Changes
   DBD-Pg/trunk/Pg.pm
   DBD-Pg/trunk/t/03dbmethod.t

Log:
CPAN bug 46103: Make foreign_key_info respect FetchHashKeyName setting.


Modified: DBD-Pg/trunk/Changes
==============================================================================
--- DBD-Pg/trunk/Changes        (original)
+++ DBD-Pg/trunk/Changes        Mon May 18 10:53:47 2009
@@ -1,5 +1,9 @@
 ('GSM' is Greg Sabino Mullane, [email protected])
 
+2.13.2
+
+  - Make foreign_key_info() respect FetchHashKeyName (CPAN bug #46103) [GSM]
+
 2.13.1 Released April 23, 2009 (subversion r12713)
 
   - Fix leak in pg_warn (CPAN bug #45163) [[email protected]]

Modified: DBD-Pg/trunk/Pg.pm
==============================================================================
--- DBD-Pg/trunk/Pg.pm  (original)
+++ DBD-Pg/trunk/Pg.pm  Mon May 18 10:53:47 2009
@@ -834,6 +834,10 @@
 
                ## PK: catalog, schema, table, FK: catalog, schema, table, attr
 
+               my $oldname = $dbh->{FetchHashKeyName};
+
+               local $dbh->{FetchHashKeyName} = 'NAME_lc';
+
                ## Each of these may be undef or empty
                my $pschema = $_[1] || '';
                my $ptable = $_[2] || '';
@@ -1060,6 +1064,20 @@
                        KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME
                        DEFERABILITY UNIQUE_OR_PRIMARY PK_DATA_TYPE FKDATA_TYPE
                ));
+
+               if ($oldname eq 'NAME_lc') {
+                       if ($odbc) {
+                               for my $col (@ODBC_cols) {
+                                       $col = lc $col;
+                               }
+                       }
+                       else {
+                               for my $col (@CLI_cols) {
+                                       $col = lc $col;
+                               }
+                       }
+               }
+
                return _prepare_from_data('foreign_key_info', $fkinfo, $odbc ? 
\...@odbc_cols : \...@cli_cols);
 
        }

Modified: DBD-Pg/trunk/t/03dbmethod.t
==============================================================================
--- DBD-Pg/trunk/t/03dbmethod.t (original)
+++ DBD-Pg/trunk/t/03dbmethod.t Mon May 18 10:53:47 2009
@@ -26,7 +26,7 @@
 if (! defined $dbh) {
        plan skip_all => 'Connection to database failed, cannot continue 
testing';
 }
-plan tests => 521;
+plan tests => 524;
 
 isnt ($dbh, undef, 'Connect to database for database handle method testing');
 
@@ -1020,6 +1020,28 @@
 $expected = [$fk3,$fk1,$fk2,$fk5,$fk6,$fk7];
 is_deeply ($result, $expected, $t);
 
+$t='DB handle method "foreign_key_info" works with FetchHashKeyName NAME_lc';
+$dbh->{FetchHashKeyName} = 'NAME_lc';
+$sth = $dbh->foreign_key_info(undef,undef,$table1,undef,undef,$table2);
+$sth->execute();
+$result = $sth->fetchrow_hashref();
+$sth->finish();
+ok (exists $result->{'fk_table_name'}, $t);
+
+$t='DB handle method "foreign_key_info" works with FetchHashKeyName NAME_uc';
+$dbh->{FetchHashKeyName} = 'NAME_uc';
+$sth = $dbh->foreign_key_info(undef,undef,$table1,undef,undef,$table2);
+$sth->execute();
+$result = $sth->fetchrow_hashref();
+ok (exists $result->{'FK_TABLE_NAME'}, $t);
+
+$t='DB handle method "foreign_key_info" works with FetchHashKeyName NAME';
+$dbh->{FetchHashKeyName} = 'NAME';
+$sth = $dbh->foreign_key_info(undef,undef,$table1,undef,undef,$table2);
+$sth->execute();
+$result = $sth->fetchrow_hashref();
+ok (exists $result->{'FK_TABLE_NAME'}, $t);
+
 # Clean everything up
 {
        $dbh->do('DROP TABLE dbd_pg_test3');

Reply via email to