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/
>

Reply via email to