From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "David E(dot) Wheeler" <david(at)kineticode(dot)com> |
Cc: | Josh Berkus <josh(at)agliodbs(dot)com>, Dave Page <dpage(at)pgadmin(dot)org>, Bruce Momjian <bruce(at)momjian(dot)us>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: pg_class.relistemp |
Date: | 2011-07-15 16:41:53 |
Message-ID: | 2601.1310748113@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
"David E. Wheeler" <david(at)kineticode(dot)com> writes:
> So pgTAP creates temporary tables to store result sets so that it can then compare the results of two queries. The function in question was getting a list of columns in such a temporary table in order to make sure that the types were the same between two such tables before comparing results. It checked relistemp to make sure it was looking at the temp table rather than some other table that might happen to have the same name.
Well, actually, that code flat out doesn't work, so whether relistemp is
available in 9.1 is the least of your problems. Consider what would
happen if two concurrent sessions did this with the same temp table
name.
How about doing this instead?
SELECT pg_catalog.format_type(a.atttypid, a.atttypmod)
FROM pg_catalog.pg_attribute a
JOIN pg_catalog.pg_class c ON a.attrelid = c.oid
WHERE c.oid = 'pg_temp.tablenamehere'::pg_catalog.regclass
AND attnum > 0
AND NOT attisdropped
ORDER BY attnum
This would only work in releases that know the pg_temp abbreviation,
which includes any minor release later than March 2007. But since
relistemp doesn't even exist before 8.4 (released in 2009), that's still
more backwards-portable than what you've got. You could also just do
'tablenamehere'::pg_catalog.regclass and trust that the user didn't move
pg_temp to the back of the search path.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Kevin Grittner | 2011-07-15 17:06:42 | Re: SSI error messages |
Previous Message | Magnus Hagander | 2011-07-15 16:36:00 | Re: pg_class.relistemp |