Re: Prevent writes on large objects in read-only transactions
Yugo Nagata <nagata@sraoss.co.jp>
From: Yugo NAGATA <nagata@sraoss.co.jp>
To: Michael Paquier <michael@paquier.xyz>
Cc: pgsql-hackers@postgresql.org
Date: 2022-05-30T08:44:18Z
Lists: pgsql-hackers
Attachments
- prevent_lo_writes_during_recovery.patch (text/x-diff) patch
On Sat, 28 May 2022 18:00:54 +0900 Michael Paquier <michael@paquier.xyz> wrote: > On Fri, May 27, 2022 at 03:30:28PM +0900, Yugo NAGATA wrote: > > Currently, lo_creat(e), lo_import, lo_unlink, lowrite, lo_put, > > and lo_from_bytea are allowed even in read-only transactions. > > By using them, pg_largeobject and pg_largeobject_metatable can > > be modified in read-only transactions and the effect remains > > after the transaction finished. Is it unacceptable behaviours, > > isn't it? > > Well, there is an actual risk to break applications that have worked > until now for a behavior that has existed for years with zero > complaints on the matter, so I would leave that alone. Saying that, I > don't really disagree with improving the error messages a bit if we > are in recovery. Thank you for your comment. I am fine with leaving the behaviour in read-only transactions as is if anyone don't complain and there are no risks. As to the error messages during recovery, I think it is better to improve it, because the current messages are emitted by elog() and it seems to imply they are internal errors that we don't expected. I attached a updated patch for it. Regards, Yugo Nagata -- Yugo NAGATA <nagata@sraoss.co.jp>
Commits
-
Prevent write operations on large objects in read-only transactions
- 55f4802785f6 16.0 landed
-
Fix comment in regression tests for large objects
- 664da2a389e5 15.0 landed