agora inbox for pgsql-hackers@postgresql.org  
help / color / mirror / Atom feed
From: 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