Attached is a patch against DBD::Pg 1.20 which
fixes the driver-specific function 'table_attributes'
for use with PostgreSQL 7.3 while maintaining
backwards compatibility with older PostgreSQL
versions.

To avoid voodoo with PostgreSQL version numbers
a check is made whether pg_relcheck exists and
the appropriate query (either 7.3 or pre 7.3)
executed. Tested with 7.3 and 7.1.3.

This is hopefully a one off problem requiring this
kind of check. I haven't had a chance to look at
every function in Pg.pm, but it seems this is the
only one "broken" by 7.3.

Comments, corrections etc. welcome!

Ian Barwick
[EMAIL PROTECTED]

619c619,627
<             my ($constraint) = $dbh->selectrow_array("select rcsrc from pg_relcheck where rcname = '${table}_$col_name'");
---
>             # Note: as of PostgreSQL 7.3 pg_relcheck has been replaced
>             # by pg_constraint. To maintain compatibility, check whether
>             # pg_relcheck exists and execute the appropriate query.
> 
>             my ($pre73) = $dbh->selectrow_array("SELECT 1 FROM pg_class WHERE relname='pg_relcheck'") || 0;
>             my $con_query = $pre73 
>              ? "SELECT rcsrc FROM pg_relcheck WHERE rcname = '${table}_$col_name'"
>              : "SELECT consrc FROM pg_catalog.pg_constraint WHERE contype = 'c' AND conname = '${table}_$col_name'";
>             my ($constraint) = $dbh->selectrow_array($con_query);

Reply via email to