BUG #19446: Domain DEFAULT not reflected in system catalogs and information_schema (PG 18.3)
| От | PG Bug reporting form |
|---|---|
| Тема | BUG #19446: Domain DEFAULT not reflected in system catalogs and information_schema (PG 18.3) |
| Дата | |
| Msg-id | 19446-c2e092abdbf0216e@postgresql.org обсуждение исходный текст |
| Ответы |
Re: BUG #19446: Domain DEFAULT not reflected in system catalogs and information_schema (PG 18.3)
Re: BUG #19446: Domain DEFAULT not reflected in system catalogs and information_schema (PG 18.3) |
| Список | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 19446 Logged by: Xianghang Zheng Email address: zheng_xianghang@163.com PostgreSQL version: 18.3 Operating system: Linux x86_64 Description: 1. PostgreSQL Version PostgreSQL 18.3 (x86_64) 2. Operating System Linux x86_64 3. Problem Description When a column uses a domain with DEFAULT value, all system catalogs fail to reflect the default: - pg_attribute.atthasdef = false - No entries in pg_attrdef - information_schema.columns.column_default is empty But the default value works correctly at runtime. This is a metadata bug. 4. Steps to Reproduce CREATE DOMAIN info_domain AS int DEFAULT 100; CREATE TABLE t (col info_domain); SELECT attname, atthasdef FROM pg_attribute WHERE attrelid = 't'::regclass AND attnum > 0; SELECT * FROM pg_attrdef WHERE adrelid = 't'::regclass; SELECT column_name, column_default FROM information_schema.columns WHERE table_name = 't' AND column_name = 'col'; INSERT INTO t DEFAULT VALUES; SELECT * FROM t; 5. Actual Result - atthasdef = f - pg_attrdef returns empty - column_default is empty - But the default value 100 works 6. Expected Result System catalogs should show the domain's DEFAULT correctly. 7. Test Output postgres=# CREATE DOMAIN info_domain AS int DEFAULT 100; CREATE DOMAIN postgres=# CREATE TABLE t (col info_domain); CREATE TABLE postgres=# SELECT attname, atthasdef FROM pg_attribute WHERE attrelid = 't'::regclass AND attnum > 0; attname | atthasdef ---------+----------- col | f (1 row) postgres=# SELECT * FROM pg_attrdef WHERE adrelid = 't'::regclass; oid | adrelid | adnum | adbin -----+---------+-------+------- (0 rows) postgres=# SELECT column_name, column_default FROM information_schema.columns WHERE table_name = 't' AND column_name = 'col'; column_name | column_default -------------+---------------- col | (1 row) postgres=# INSERT INTO t DEFAULT VALUES; INSERT 0 1 postgres=# SELECT * FROM t; col ----- 100 (1 row)
В списке pgsql-bugs по дате отправления: