pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: vinay.s.banakar@gmail.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: Thu, 12 Sep 2019 16:51:01 +0000
Message-ID: <16006-99290d2e4642cbd5@postgresql.org> (raw)

The following bug has been logged on the website:

Bug reference:      16006
Logged by:          Vinay Banakar
Email address:      vinay.s.banakar@gmail.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.



view thread (8+ messages)  latest in thread

Message-ID: <16006-99290d2e4642cbd5@postgresql.org>
Permalink:  ../16006-99290d2e4642cbd5@postgresql.org/
Also on:    postgresql.org/message-id/16006-99290d2e4642cbd5@postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: noreply@postgresql.org, pgsql-bugs@lists.postgresql.org, vinay.s.banakar@gmail.com
  Subject: Re: BUG #16006: Update queries fail on a table having any policy with a function that takes a whole-row var as arg
  In-Reply-To: <16006-99290d2e4642cbd5@postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox