BUG #16137: pg_upgrade fails with an index over nesting function

Поиск
Список
Период
Сортировка
От PG Bug reporting form
Тема BUG #16137: pg_upgrade fails with an index over nesting function
Дата
Msg-id 16137-4917a81e8491110e@postgresql.org
обсуждение исходный текст
Ответы Re: BUG #16137: pg_upgrade fails with an index over nesting function  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      16137
Logged by:          Alexander Lakhin
Email address:      exclusion@gmail.com
PostgreSQL version: 12.1
Operating system:   Ubuntu 18.04
Description:

The following simple script:
CREATE TABLE test(i INT PRIMARY KEY);
CREATE FUNCTION func2(i INT) RETURNS INT IMMUTABLE LANGUAGE SQL
    AS 'SELECT $1';
CREATE FUNCTION func1(c INT) RETURNS INT IMMUTABLE LANGUAGE SQL
    AS 'SELECT func2($1)';
CREATE INDEX ON test(func1(i));

makes pg_upgrade choke on the database:
...
Performing Upgrade
------------------
Analyzing all rows in the new cluster                       ok
Freezing all rows in the new cluster                        ok
Deleting files from new pg_xact                             ok
Copying old pg_xact to new server                           ok
Setting next transaction ID and epoch for new cluster       ok
Deleting files from new pg_multixact/offsets                ok
Copying old pg_multixact/offsets to new server              ok
Deleting files from new pg_multixact/members                ok
Copying old pg_multixact/members to new server              ok
Setting next multixact ID and offset for new cluster        ok
Resetting WAL archives                                      ok
Setting frozenxid and minmxid counters in new cluster       ok
Restoring global objects in the new cluster                 ok
Restoring database schemas in the new cluster
  postgres                                                  
*failure*

Consult the last few lines of "pg_upgrade_dump_12717.log" for
the probable cause of the failure.
Failure, exiting

pg_upgrade_dump_12717.log contains:
...
pg_restore: creating INDEX "public.test_func1_idx"
pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 2089; 1259 16391 INDEX test_func1_idx postgres
pg_restore: error: could not execute query: ERROR:  function func2(integer)
does not exist
LINE 1: SELECT func2($1)
               ^
HINT:  No function matches the given name and argument types. You might need
to add explicit type casts.
QUERY:  SELECT func2($1)
CONTEXT:  SQL function "func1" during inlining
Command was: 
-- For binary upgrade, must preserve pg_class oids
SELECT
pg_catalog.binary_upgrade_set_next_index_pg_class_oid('16391'::pg_catalog.oid);

CREATE INDEX "test_func1_idx" ON "public"."test" USING "btree"
("public"."func1"("i"));


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

Предыдущее
От: Manuel Rigger
Дата:
Сообщение: Re: ALTER TABLE fails when changing column type due to index withbit_ops opclass
Следующее
От: Thomas Munro
Дата:
Сообщение: Re: LDAPS trusted ca support