Re: foreign_key_info() nits

"Martin J. Evans" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.general
Message-ID <[email protected]>
On 16/11/14 23:59, Kurt Starsinic wrote:
> Hi all,
>
> I've been using DBI with DBD::Sybase and SQL Server, and discovered a
> couple of issues. I will be happy to offer a patch if I can get some
> consensus on what the correct resolutions are:
>
> The DBI docs say that foreign_key_info() can take from 3 to 7
> arguments, but the code demands 6 or 7 (even though many of the
> arguments can be undef). My opinion is that the docs are good and the
> code is broken. Any objections on this point?

The docs say:

   $sth = $dbh->foreign_key_info( $pk_catalog, $pk_schema, $pk_table
                                , $fk_catalog, $fk_schema, $fk_table );

Perhaps you are referring to "If both PKT and FKT are given" or the examples:

   $sth = $dbh->foreign_key_info( undef, $user, 'master');
   $sth = $dbh->foreign_key_info( undef, undef,   undef , undef, $user, 'detail');
   $sth = $dbh->foreign_key_info( undef, $user, 'master', undef, $user, 'detail');

The addition of \%attr on the end of foreign_key_info is probably what is dictating the minimum of 6 so I think the example with 3 arguments is probably wrong. Also the ODBC API for SQLForeignKeys takes the same 6 arguments.

> Also, at least with SQL Server, foreign_key_info() returns columns
> named [FP]KTABLE_OWNER and [FP]KTABLE_QUALIFIER instead of
> [FP]KTABLE_SCHEMA and [FP]KTABLE_CAT. I think the driver should
> rewrite the column names. Does anybody disagree?

They are the old ODBC 2 names for the columns. You can certainly get those with DBD::ODBC with very old drivers. The ODBC docs say:

"The following columns have been renamed for ODBC 3.x. The column name changes do not affect backward compatibility because applications bind by column number."

As the DBD::ODBC maintainer I would prefer not to have to map ODBC 2 names to 3 - it would set a precedent that would lead to many other changes.

>
> Thanks, Kurt Starsinic
>

Martin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.