Re: rule-related crash in v11
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2018-05-25T15:29:27Z
Lists: pgsql-hackers
On Fri, May 25, 2018 at 11:21 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Robert Haas <robertmhaas@gmail.com> writes: >> For reasons that I'm not quite sure about, the following test case >> crashes in v11, but not earlier versions: > > Crashes just fine in prior versions for me, at least as far back as 9.3, > but probably much further. Note that I was doing an extra select fun() > right after creating the function --- I don't think that should affect > the behavior, but maybe it does? Or maybe you were testing non-assert > builds? Oops, yeah, my back-branch builds were without assertions. > The core problem here seems to be that exec_stmt_execsql sets mod_stmt > once when the query is first planned, and doesn't account for the idea > that the statement's classification might change later. But adding > (or removing) a DO INSTEAD rule can indeed change that. > > Looking at what mod_stmt is used for, we've got > > (1) the Assert that's crashing, and its siblings, which are just meant > to cross-check that mod_stmt is consistent with the SPI return code. > > (2) two places that decide to enforce STRICT behavior if mod_stmt > is true. > > I think we could just drop those Asserts. As for the other things, > maybe we should force STRICT on the basis of examining the raw > parsetree (which really is immutable) rather than what came out of > the planner. It doesn't seem like a great idea that INSERT ... INTO > should stop being considered strict if there's currently a rewrite > rule that changes it into something else. Yes, that does sound like surprising behavior. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
Fix misidentification of SQL statement type in plpgsql's exec_stmt_execsql.
- f9ecb6caba07 9.6.10 landed
- da757bf0ffb0 9.3.24 landed
- 98d522a1de1b 9.4.19 landed
- 004293c66651 9.5.14 landed
- 9a8aa25ccc6c 11.0 landed
- 5a225b0d6177 10.5 landed