Re: wrong error message related to unsupported feature

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: wrong error message related to unsupported feature
Date: 2025-03-23 07:49:38
Message-ID: CAFj8pRDzs4=gtjH+Ef49Khs1t-sPQ9Q7+XbkjkOCtY1RV4B8Zw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

čt 20. 3. 2025 v 22:30 odesílatel Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
napsal:

> Hi
>
> út 18. 3. 2025 v 21:33 odesílatel Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)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/
>>
>

Attachment Content-Type Size
fix-message.patch text/x-patch 5.6 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Rahila Syed 2025-03-23 08:36:47 Re: Improve monitoring of shared memory allocations
Previous Message Andrei Lepikhov 2025-03-23 07:25:42 Re: Proposal - Allow extensions to set a Plan Identifier