Re: wrong error message related to unsupported feature

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: wrong error message related to unsupported feature
Дата
Msg-id CAFj8pRDzs4=gtjH+Ef49Khs1t-sPQ9Q7+XbkjkOCtY1RV4B8Zw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: wrong error message related to unsupported feature  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-hackers


čt 20. 3. 2025 v 22:30 odesílatel Pavel Stehule <pavel.stehule@gmail.com> napsal:
Hi

út 18. 3. 2025 v 21:33 odesílatel Álvaro Herrera <alvherre@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+giyQ@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

something like attached patch

Regards

Pavel
 

Regards

Pavel
   








--
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
Вложения

В списке pgsql-hackers по дате отправления: