Check constraints on non-immutable keys - Mailing list pgsql-hackers

From Magnus Hagander
Subject Check constraints on non-immutable keys
Date
Msg-id AANLkTikwFfvavEX9nDwcRD4_xJb_VAitMeP1IH4wpGIt@mail.gmail.com
Whole thread Raw
Responses Re: Check constraints on non-immutable keys  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Check constraints on non-immutable keys  (Merlin Moncure <mmoncure@gmail.com>)
List pgsql-hackers
We currently allow this:

postgres=# create table t(a timestamptz not null primary key, check(a > now()));
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index
"t_pkey" for table "t"
CREATE TABLE


Which seems very wrong. For one thing, a dump of this database can not
be restored if now() has advanced enough into the future (which it
will eventually). It also makes impossible to do things like SET a=a
on the table.

Yes, this is clearly a stupidly defined constraint, but why do we allow it?

Shouldn't we disallow anything that's not IMMUTABLE in a check constraint?

-- Magnus HaganderMe: http://www.hagander.net/Work: http://www.redpill-linpro.com/


pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Proposal for 9.1: WAL streaming from WAL buffers
Next
From: "Kevin Grittner"
Date:
Subject: Additional startup logging