BUG #18676: Execute function while selecting from table with partial index using this function.

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: poliv78(at)gmail(dot)com
Subject: BUG #18676: Execute function while selecting from table with partial index using this function.
Date: 2024-10-28 14:58:34
Message-ID: 18676-383b0d2b6dc65bf6@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 18676
Logged by: Yevhen Polyvoda
Email address: poliv78(at)gmail(dot)com
PostgreSQL version: 17.0
Operating system: macos Sequoia 15.0
Description:

Please run the script below. It creates sample table with partial index
using IMMUTABLE function.
I think when table is changing - index in changing and thus function used in
WHERE cluse can be run.
But it is not supposed to be run on just simple SELECT from table without
even condition to use this index.

---------------------------------------------------
CREATE TABLE IF NOT EXISTS public.test_table
(
id integer NOT NULL
);

CREATE OR REPLACE FUNCTION public.test_function(
)
RETURNS integer
LANGUAGE 'plpgsql'
COST 100
IMMUTABLE PARALLEL UNSAFE
AS $BODY$
DECLARE
BEGIN
raise notice 'test';
RETURN 1;
END
$BODY$;
REVOKE ALL ON FUNCTION public.test_function() FROM PUBLIC;

CREATE INDEX IF NOT EXISTS test_idx
ON public.test_table USING btree
(id)
WHERE id = public.test_function();

create role test_role LOGIN PASSWORD 'test';

------------------------------------------------
set role = 'test_role';
select * from public.test_table;

we will get permission denied because while selecting somehow function
public.test_function() runs.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2024-10-28 15:42:46 Re: BUG #18676: Execute function while selecting from table with partial index using this function.
Previous Message David G. Johnston 2024-10-28 13:42:05 Re: BUG #18675: Postgres is not realasing memory causing OOM