Re: Check constraints and function volatility categories - Mailing list pgsql-general

From David G. Johnston
Subject Re: Check constraints and function volatility categories
Date
Msg-id CAKFQuwZ9wxzREa=0tniE4geZjXxkductR2hBGkOXjZTSZmHnMw@mail.gmail.com
Whole thread Raw
In response to Re: Check constraints and function volatility categories  (Adrian Klaver <adrian.klaver@aklaver.com>)
Responses Re: Check constraints and function volatility categories
List pgsql-general
On Mon, Feb 1, 2016 at 12:41 PM, Adrian Klaver <adrian.klaver@aklaver.com> wrote:
On 02/01/2016 11:17 AM, Dane Foster wrote:
Hello,

I'm discovering that I need to write quite a few functions for use
strictly w/ check constraints and I'm wondering if declaring the
volatility category for said functions will affect their behavior when
invoked by PostgreSQL's check constraint mechanism.

​Adrian's point is spot-on but the important thing to consider in this situation is that check constraints are assumed to be immutable and if you implement a check function that is not you don't get to complain what you see something broken.  The nature and use of an immutable check constraint only has a single dynamic - execute the function using the given values once for every record INSERT or UPDATE.  There is no reason, and I suspect there is no actual, attempt to even look at the volatility category of said function before performing those actions.  It is possible that two records inserted or updated in the same query could make use of the caching possibilities afforded by immutable functions but if so assume it is being done unconditionally.

David J.

pgsql-general by date:

Previous
From: melvin6925
Date:
Subject: Re: strange sql behavior
Next
From: Yu Nie
Date:
Subject: Re: strange sql behavior