Hi út 18. 3. 2025 v 21:33 odesílatel Álvaro Herrera <alvhe...@alvh.no-ip.org> napsal:
> On 2025-Mar-18, Pavel Stehule wrote: > > > Maybe I found a bug > > > > (2025-03-18 19:28:06) postgres=# create table foo(a int constraint gzero > > check(a > 10) NOT ENFORCED); > > CREATE TABLE > > (2025-03-18 19:29:37) postgres=# insert into foo values(0); > > INSERT 0 1 > > (2025-03-18 19:29:49) postgres=# insert into foo values(6); > > INSERT 0 1 > > (2025-03-18 19:29:55) postgres=# alter table foo alter constraint gzero > > enforced; > > ERROR: FOREIGN KEY constraints cannot be marked ENFORCED > > LINE 1: alter table foo alter constraint gzero enforced; > > > > I know so altering enforcing constraint is not supported yet, but the > error > > message is surely wrong > > Yep, this is a bug all right -- I reported this and related problems a > few days ago [1]. There's a proposal in that thread for how to fix this > (see Amul's email [2] and my followup), but I haven't had time to fully > implement it. If you want to give it a couple of hours to complete it, > that'd be great. I have a couple of patches that I need to handle > before coming back to that. > > [1] https://postgr.es/m/202503041822.aobpqke3igvb@alvherre.pgsql > [2] > https://postgr.es/m/caaj_b97hd-jmts7ajgu6tdbczdx_kyukxg+k-dtymoieg+g...@mail.gmail.com I am looking this issue, and I am not sure if proposed way is the best cannot we change processCASbits just like ? if (cas_bits & (CAS_DEFERRABLE | CAS_INITIALLY_DEFERRED)) { if (deferrable) *deferrable = true; else if (constrType) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), /* translator: %s is CHECK, UNIQUE, or similar */ constrType ? errmsg("%s constraints cannot be marked DEFERRABLE", constrType) : errmsg("constraint cannot be marked DEFERRABLE"), parser_errposition(location))); } ... Probably can be better to not try to read from catalog in this moment, and then we can accept so we don't know constraint type Regards Pavel > > -- > Álvaro Herrera PostgreSQL Developer — > https://www.EnterpriseDB.com/ >