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

Поиск
Список
Период
Сортировка
Искать
От
Christophe Pettus
Тема
Re: BUG #18007: age(timestamp, timestamp) is marked as immutable, but using age(date, date) says it's not
Дата
Msg-id
28E5C3E3-5350-4870-870F-BFCBBB705611@thebuild.com
Ответ на
Список
Дерево обсуждения
BUG #18007: age(timestamp, timestamp) is marked as immutable, but using age(date, date) says it's not PG Bug reporting form <noreply@postgresql.org>
Re: BUG #18007: age(timestamp, timestamp) is marked as immutable, but using age(date, date) says it's not Christophe Pettus <xof@thebuild.com>
Re: BUG #18007: age(timestamp, timestamp) is marked as immutable, but using age(date, date) says it's not "David G. Johnston" <david.g.johnston@gmail.com>


> On Jun 29, 2023, at 11:29, Braiam  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 volatile inputs 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 по дате отправления
FAQ