Re: wrong error message related to unsupported feature
От | Pavel Stehule |
---|---|
Тема | Re: wrong error message related to unsupported feature |
Дата | |
Msg-id | CAFj8pRBZ4Zt3jzqqFLMjwG0kP=J3Up1GRNe8c99yBxe=CURo4A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: wrong error message related to unsupported feature (Álvaro Herrera <alvherre@alvh.no-ip.org>) |
Ответы |
Re: wrong error message related to unsupported feature
|
Список | pgsql-hackers |
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
Regards
Pavel
В списке pgsql-hackers по дате отправления: