Re: BUG #19351: in pg18.1,when not null exists in the table , and add constraint problem.
Srinath Reddy Sadipiralla <srinath2133@gmail.com>
From: Srinath Reddy Sadipiralla <srinath2133@gmail.com>
To: msdnchina@163.com, pgsql-bugs@lists.postgresql.org
Date: 2025-12-10T16:02:46Z
Lists: pgsql-bugs
Hi, On Wed, Dec 10, 2025 at 8:52 PM PG Bug reporting form < noreply@postgresql.org> wrote: > The following bug has been logged on the website: > > Bug reference: 19351 > Logged by: yanliang lei > Email address: msdnchina@163.com > PostgreSQL version: 18.1 > Operating system: Linux > Description: > > postgres=# create table test_null_20251210(c1 int not null,c2 text); > CREATE TABLE > postgres=# \d+ test_null_20251210 > 数据表 "public.test_null_20251210" > 栏位 | 类型 | 校对规则 | 可空的 | 预设 | 存储 | 压缩 | 统计目标 | 描述 > > ------+---------+----------+----------+------+----------+------+----------+------ > c1 | integer | | not null | | plain | | | > c2 | text | | | | extended | | | > Not-null constraints: > "test_null_20251210_c1_not_null" NOT NULL "c1" > 访问方法 heap > > postgres=# alter table test_null_20251210 add constraint xyzxyz not null > c1; > ALTER TABLE > <<<--- above alter table statement should report 'not null constraint > exists', > <<<---- Maybe this problem is a bug ? > postgres=# \d+ test_null_20251210 > 数据表 "public.test_null_20251210" > 栏位 | 类型 | 校对规则 | 可空的 | 预设 | 存储 | 压缩 | 统计目标 | 描述 > > ------+---------+----------+----------+------+----------+------+----------+------ > c1 | integer | | not null | | plain | | | > c2 | text | | | | extended | | | > Not-null constraints: > "test_null_20251210_c1_not_null" NOT NULL "c1" > 访问方法 heap > > postgres=# select version(); > version > > ----------------------------------------------------------------------------------- > PostgreSQL 18.1 on aarch64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, > 64-bit > (1 行记录) > > postgres=# > > It's an expected behavior; you can check here [0], but i am curious ,why it's not treated as normal constraint and why we are not throwing an error like the constraint already exists? [0] https://www.postgresql.org/docs/18/ddl-alter.html?utm_source=chatgpt.com#DDL-ALTER-ADDING-A-CONSTRAINT -- Thanks, Srinath Reddy Sadipiralla EDB: https://www.enterprisedb.com/