Re: Check-out mutable functions in check constraints - Mailing list pgsql-hackers

From Tomas Vondra
Subject Re: Check-out mutable functions in check constraints
Date
Msg-id 20190712111457.ekkcgx5mpkxl2ooh@development
Whole thread Raw
In response to Check-out mutable functions in check constraints  (Kyotaro Horiguchi <horikyota.ntt@gmail.com>)
Responses Re: Check-out mutable functions in check constraints
List pgsql-hackers
On Fri, Jul 12, 2019 at 03:44:58PM +0900, Kyotaro Horiguchi wrote:
>Hello.
>
>As mentioned in the following message:
>
>https://www.postgresql.org/message-id/20190712.150527.145133646.horikyota.ntt%40gmail.com
>
>Mutable function are allowed in check constraint expressions but
>it is not right. The attached is a proposed fix for it including
>regression test.
>

I think the comment in parse_expr.c is wrong:

    /*
     * All SQL value functions are stable so we reject them in check
     * constraint expressions.
     */
    if (pstate->p_expr_kind == EXPR_KIND_CHECK_CONSTRAINT)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
                 errmsg("mutable functions are not allowed in check constraints")));

At first it claims SQL value functions are stable, but then rejects them
with a message that they're mutable.

Also, the other places use "cannot ..." messages:

    case EXPR_KIND_COLUMN_DEFAULT:
        err = _("cannot use column reference in DEFAULT expression");
        break;

so maybe these new checks should use the same style.


regards

-- 
Tomas Vondra                  http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




pgsql-hackers by date:

Previous
From: Tomas Vondra
Date:
Subject: Re: Check-out mutable functions in check constraints
Next
From: Sehrope Sarkuni
Date:
Subject: Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS)