Re: BUG #18097: Immutable expression not allowed in generated at

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: BUG #18097: Immutable expression not allowed in generated at
Дата
Msg-id CAKFQuwZW=wyr_Nfi8Ww+U-jxdh4tvztvMjT23iv2Ly+Oc0n5eQ@mail.gmail.com
обсуждение исходный текст
Ответ на BUG #18097: Immutable expression not allowed in generated at  (PG Bug reporting form <noreply@postgresql.org>)
Ответы Re: BUG #18097: Immutable expression not allowed in generated at  (James Keener <jim@jimkeener.com>)
Список pgsql-bugs
On Thursday, September 7, 2023, PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      18097
Logged by:          Jim Keener
Email address:      jim@jimkeener.com
PostgreSQL version: 15.0
Operating system:   Linux
Description:       

However, the following DOES NOT work with an error of (ERROR:  generation
expression is not immutable):

* alter table test_table add created_local text GENERATED ALWAYS AS
(EXTRACT(isoyear FROM created_at AT TIME ZONE 'America/New_York') || '|' ||
EXTRACT(week FROM created_at AT TIME ZONE 'America/New_York')) STORED;

Given that casting shouldn't "increase" the immutability of an expression,
and expression indexes need also be immutable afaik, I think that there is a
bug somewhere here?

Casting very much can be a non-immutable activity, dates being the prime example, and I presume going from numeric to text is indeed defined to be stable hence the error.  This is probably due to needing to consult locale for deciding how to represent the decimal places divider.  This is one of the few places, assuming you write the function to set an environment fixing locale to some know value like you did with the time zones, where creating an immutable function around a stable expression makes sense.

David J.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #18096: In edge-triggered epoll and kqueue, PQconsumeInput/PQisBusy are insufficient for correct async ops.
Следующее
От: Carlos Alves
Дата:
Сообщение: Re: BUG #18099: ERROR: could not access status of transaction 4007513275