> SELECT format_type(a.atttypid, a.atttypmod) > FROM pg_attribute a > JOIN pg_class b ON (a.attrelid = b.relfilenode) > JOIN pg_namespace c ON (c.oid = b.relnamespace) > WHERE b.relname = 'test' AND c.nspname = 'ab' AND a.attname = 'id';
pg_attribute.attrelid must be joined to pg_class.oid, not relfilenode. The relfilenode changes when the table is rewritten, which happens during some forms of ALTER TABLE and others. -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services