From: | Bruce Momjian <bruce(at)momjian(dot)us> |
---|---|
To: | zgrannan(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org |
Subject: | Re: BUG #15345: pg_upgrade from 9.6.10 to 10.5 fails due to function call in index definition |
Date: | 2018-08-25 02:04:18 |
Message-ID: | 20180825020418.GA7869@momjian.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Wed, Aug 22, 2018 at 05:08:36AM +0000, PG Bug reporting form wrote:
> The following bug has been logged on the website:
>
> Bug reference: 15345
> Logged by: Zack Grannan
> Email address: zgrannan(at)gmail(dot)com
> PostgreSQL version: 10.5
> Operating system: NixOS
> Description:
>
> It appears that pg_upgrade fails when it encounters a table with an index
> computed by a function that itself calls another function. The following is
> a simple example:
>
> CREATE TABLE things(a int, b int);
>
> CREATE FUNCTION subtract(int, int) RETURNS int
> LANGUAGE sql IMMUTABLE
> AS $_$
> SELECT $1 - $2
> $_$;
>
> CREATE FUNCTION f(int, int) RETURNS int
> LANGUAGE sql IMMUTABLE
> AS $_$
> SELECT subtract($1, $2)
> $_$;
>
> CREATE INDEX diff_things ON things(f(a,b));
This is caused by security changes made in PG 10.3 and other minor
releases. Please see this thread for an outline of the issue:
The fix is to prefix the function call by 'public':
CREATE TABLE things(a int, b int);
CREATE FUNCTION subtract(int, int) RETURNS int
LANGUAGE sql IMMUTABLE
AS $_$
SELECT $1 - $2
$_$;
CREATE FUNCTION f(int, int) RETURNS int
LANGUAGE sql IMMUTABLE
AS $_$
--> SELECT public.subtract($1, $2)
$_$;
CREATE INDEX diff_things ON things(f(a,b));
--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ As you are, so once was I. As I am, so you will be. +
+ Ancient Roman grave inscription +
From | Date | Subject | |
---|---|---|---|
Next Message | Amit Kapila | 2018-08-25 03:19:10 | Re: Re: Re: Bug: ERROR: invalid cache ID: 42 CONTEXT: parallel worker |
Previous Message | Bruce Momjian | 2018-08-24 19:53:44 | Re: BUG #15344: pg_proc.proisagg was removed incompatibly in PostgreSQL 11 |