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.comI am looking this issue, and I am not sure if proposed way is the bestcannot 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
Вложения
В списке pgsql-hackers по дате отправления: