From: | PG Bug reporting form <noreply(at)postgresql(dot)org> |
---|---|
To: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
Cc: | vinay(dot)s(dot)banakar(at)gmail(dot)com |
Subject: | BUG #16006: Update queries fail on a table having any policy with a function that takes a whole-row var as arg |
Date: | 2019-09-12 16:51:01 |
Message-ID: | 16006-99290d2e4642cbd5@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: 16006
Logged by: Vinay Banakar
Email address: vinay(dot)s(dot)banakar(at)gmail(dot)com
PostgreSQL version: 9.5.19
Operating system: Ubuntu 16.04.6 LTS
Description:
Update queries fail on a table having any policy with a function that takes
a whole-row var as argument:
I stumbled upon this after I had enabled RLS on a table and have a policy
that basically raises every row read to log at INFO level (a quick hack for
benchmarking).
Table:
create table usertable(key VARCHAR PRIMARY KEY,field0 text,field1
text,field2 text,field3 text,field4 text,field5 text,field6 text,field7
text,field8 text,field9 text,timestamp timestamp NOT NULL DEFAULT NOW());
# This policy is to raise a row to INFO log when an operation is made on
that.
ALTER TABLE usertable enable ROW LEVEL SECURITY;
ALTER TABLE usertable force ROW LEVEL SECURITY;
create function log_record(_tbl usertable) returns boolean language plpgsql
immutable as $$ begin raise info 'log: %', $1; return true; end; $$;
CREATE POLICY loggerPolicy ON usertable USING (log_record(usertable));
Now any update queries on this table fail.
This was working correctly on 9.5.15.
Thanks to RhodiumToad from #postgresql for verifying the bug.
From | Date | Subject | |
---|---|---|---|
Next Message | PG Bug reporting form | 2019-09-12 19:51:52 | BUG #16007: Regarding patch for BUG #3995: pqSocketCheck doesn't return |
Previous Message | Tom Lane | 2019-09-12 14:32:00 | Re: Unexpected behavior of jsonb_set() with a `null` value |