[SQL] TRUNCATE TABLE corrupts pg_class.relfilenode = pg_attrdef.pg_attrdef
От | Sebastien FLAESCH |
---|---|
Тема | [SQL] TRUNCATE TABLE corrupts pg_class.relfilenode = pg_attrdef.pg_attrdef |
Дата | |
Msg-id | 66def74b-633e-65a0-cf44-4d486f15ebd9@4js.com обсуждение исходный текст |
Ответы |
Re: [SQL] TRUNCATE TABLE corrupts pg_class.relfilenode =pg_attrdef.pg_attrdef
Re: [SQL] TRUNCATE TABLE corrupts pg_class.relfilenode =pg_attrdef.pg_attrdef Re: [SQL] TRUNCATE TABLE corrupts pg_class.relfilenode = pg_attrdef.pg_attrdef |
Список | pgsql-sql |
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
В списке pgsql-sql по дате отправления: