Hi all,
Testing with Postgresql 9.6rc1 (but also detected with prior versions):
It is normal that a TRUNCATE TABLE statement changes the table/sequence relation in pg_attrdef?
test1=> create table mytab ( pkey serial, name varchar(10) );
test1=> select a.adsrc from pg_class p join pg_attrdef a on (p.relfilenode = a.adrelid) where lower(p.relname) =
lower('mytab'); adsrc
------------------------------------- nextval('mytab_pkey_seq'::regclass)
(1 row)
test1=> truncate table mytab;
TRUNCATE TABLE
test1=> select a.adsrc from pg_class p join pg_attrdef a on (p.relfilenode = a.adrelid) where lower(p.relname) =
lower('mytab');adsrc
-------
(0 rows)
test1=> select adrelid, adsrc from pg_attrdef where adsrc like '%mytab%'; adrelid | adsrc
---------+------------------------------------- 6904163 | nextval('mytab_pkey_seq'::regclass)
(1 row)
Are we mis-using the condition (p.relfilenode = a.adrelid) in the first SELECT?
How can we easily check if a table is defined with a SERIAL type?
Thanks!
Seb