Re: view on system tables upgrade II

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Christoph Haller <ch(at)rodos(dot)fzk(dot)de>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: view on system tables upgrade II
Date: 2002-04-29 14:02:12
Message-ID: 23307.1020088932@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Christoph Haller <ch(at)rodos(dot)fzk(dot)de> writes:
> Sorry, but I cannot figure out where in the join
> ...
> from pg_user u, pg_type t, pg_attribute a, pg_type n
> where u.usesysid = t.typowner
> and t.typrelid = a.attrelid and t.typtype = 'c' and not (t.typname ~* 'pg_')
> and n.typelem = a.atttypid
^^^^^^^^^^^^^^^^^^^^^^
> and substr(n.typname, 1, 1) = '_'
> and a.attnum > 0 ;
> I am assuming every datatype has an array type.

The row "pg_type n" is the array type corresponding to the datatype of
the "pg_attribute a" row. If there is no such array type, no join.
Since the select isn't actually doing anything with the "n" row, I'm
not sure why it's there at all.

Another thing that's slightly bizarre about this code is that it joins
attrelid to pg_type.typrelid, rather than pg_class.oid. I'd be inclined
to write the join as

from pg_attribute a,
pg_class c left join pg_user u on (u.usesysid = c.relowner)
where c.oid = a.attrelid and not (c.relname ~* 'pg_') and a.attnum > 0 ;

The outer join against pg_user guarantees that you won't miss tables
that have no owning user.

>> If you need timestamp arrays I'd suggest
>>
>> UPDATE pg_type SET typelem = 1114 WHERE oid = 1115;
>>
> Did the pg_attribute.atttypid resp. pg_type.typelem of timestamp change from
> 1184 to 1114?

1184 is timestamptz, 1114 is timestamp. But both _timestamptz and
_timestamp are pointing at 1184 as their typelem. I imagine this was
a cut-and-paste error...

regards, tom lane

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Bruce Momjian 2002-04-29 14:04:06 Re: Temporary table weirdness
Previous Message Christoph Haller 2002-04-29 10:24:25 view on system tables upgrade II