agora inbox for pgsql-hackers@postgresql.org
help / color / mirror / Atom feedFrom: Ian Barwick <barwick@gmx.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: dbi-dev@perl.org
Cc: pgsql-interfaces@postgresql.org
Subject: Re: Patch for DBD::Pg pg_relcheck problem
Date: Tue, 10 Dec 2002 00:34:31 +0100
Message-ID: <200212100034.31936.barwick@gmx.net> (raw)
In-Reply-To: <8159.1039449832@sss.pgh.pa.us>
References: <200212091631.00125.barwick@gmx.net>
<8159.1039449832@sss.pgh.pa.us>
On Monday 09 December 2002 17:03, Tom Lane wrote:
> Ian Barwick <barwick@gmx.net> writes:
> > 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.
>
> I would think that looking at version number (select version())
> would be a much cleaner approach. Or do you think that direct
> examination of pg_class is a version-independent operation?
No, but I was hoping it will remain stable for long enough
for what is basically a temporary work around until a revised version of
DBD::Pg can be produced. It doesn't make any more assumptions
about pg_class than are made elsewhere in the current Pg.pm.
> This inquiry into pg_relcheck's existence is already arguably wrong
> in 7.3 (since it's not taking account of which schema pg_relcheck
> might be found in) and it can only go downhill in future versions.
Doh. Knew I had to be missing something obvious. (Of course,
anyone using current DBD::Pg with 7.3 as is will have to take
extra care with system tables and schema namespaces anyway.)
So out with the candle wax and pins ;-). Am I right
in thinking that the string returned by SELECT version()
starts with the word "PostgreSQL" followed by:
a space;
a single digit indicating the major version number;
a full stop / decimal point;
a single digit indicating the minor version number;
and either "interim release" number (e.g. ".1" in the case of 7.3.1), or
"devel", "rc1" etc. ?
And that this has been true since 6.x and will continue for the forseeable
future (i.e. far far longer than the intended lifespan of attached patch)?
Ian Barwick
barwick@gmx.net
Attached: revised patch
Attachments:
[text/x-diff] Pg.patch (800B, ../200212100034.31936.barwick@gmx.net/2-Pg.patch)
download | inline diff:
619c619,629
< 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
> # version number and execute appropriate query.
>
> my ($version) = $dbh->selectrow_array("SELECT version()");
> $version =~ /^PostgreSQL (\d)\.(\d)/;
>
> my $con_query = $1.$2 < 73
> ? "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);
view thread (22+ messages) latest in thread
Message-ID: <200212100034.31936.barwick@gmx.net>
Permalink: ../200212100034.31936.barwick@gmx.net/
Also on: postgresql.org/message-id/200212100034.31936.barwick@gmx.net
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: barwick@gmx.net, tgl@sss.pgh.pa.us, dbi-dev@perl.org, pgsql-interfaces@postgresql.org
Subject: Re: Patch for DBD::Pg pg_relcheck problem
In-Reply-To: <200212100034.31936.barwick@gmx.net>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox