Re: BUG #18007: age(timestamp, timestamp) is marked as immutable, but using age(date, date) says it's not - Mailing list pgsql-bugs

From Christophe Pettus
Subject Re: BUG #18007: age(timestamp, timestamp) is marked as immutable, but using age(date, date) says it's not
Date
Msg-id 28E5C3E3-5350-4870-870F-BFCBBB705611@thebuild.com
Whole thread Raw
In response to Re: BUG #18007: age(timestamp, timestamp) is marked as immutable, but using age(date, date) says it's not  (Braiam <braiamp@gmail.com>)
Responses Re: BUG #18007: age(timestamp, timestamp) is marked as immutable, but using age(date, date) says it's not  (Braiam <braiamp@gmail.com>)
List pgsql-bugs

> On Jun 29, 2023, at 11:29, Braiam <braiamp@gmail.com> wrote:
> Function age(timestamp with time zone, timestamp with time zone) is
> marked as immutable. Postgres shouldn't complain about it.

It's not the age() function as such that is the problem, but the (stable) cast from date to timestamptz.  Stable or
volatileinputs to an immutable function make the expression result non-immutable. 

For example, abs() is marked as immutable, but you can't do this:

xof=# CREATE TABLE t (i integer);
CREATE TABLE
xof=# CREATE INDEX ON t((abs(random()+i)));
ERROR:  functions in index expression must be marked IMMUTABLE




pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #17994: Invalidating relcache corrupts tupDesc inside ExecEvalFieldStoreDeForm()
Next
From: Braiam
Date:
Subject: Re: BUG #18007: age(timestamp, timestamp) is marked as immutable, but using age(date, date) says it's not