v1-0001-Fix-expanding-Var-of-type-RECORD.patch

application/octet-stream

Filename: v1-0001-Fix-expanding-Var-of-type-RECORD.patch
Type: application/octet-stream
Part: 0
Message: Re: BUG #18077: PostgreSQL server subprocess crashed by a SELECT statement with WITH clause

Patch

Format: format-patch
Series: patch v1-0001
Subject: Fix expanding Var of type RECORD
File+
src/backend/parser/parse_target.c 7 0
From 10c100dd42519951cbf55890aae247910e58b53a Mon Sep 17 00:00:00 2001
From: Richard Guo <guofenglinux@gmail.com>
Date: Wed, 30 Aug 2023 19:59:52 +0800
Subject: [PATCH v1] Fix expanding Var of type RECORD

---
 src/backend/parser/parse_target.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index 57247de363..2b0450351b 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -1591,6 +1591,13 @@ expandRecordVariable(ParseState *pstate, Var *var, int levelsup)
 					 */
 					ParseState	mypstate = {0};
 
+					/* climb up to the correct level */
+					for (int i = 0; i < netlevelsup; i++)
+					{
+						pstate = pstate->parentParseState;
+						Assert(pstate != NULL);
+					}
+
 					mypstate.parentParseState = pstate;
 					mypstate.p_rtable = rte->subquery->rtable;
 					/* don't bother filling the rest of the fake pstate */
-- 
2.31.0