Thread

  1. Re: BUG #19351: in pg18.1,when not null exists in the table , and add constraint problem.

    Srinath Reddy Sadipiralla <srinath2133@gmail.com> — 2025-12-10T16:02:46Z

    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/