From e13a8ad0336ea0018a43209b751b7320abeece43 Mon Sep 17 00:00:00 2001 From: pulsar Date: Thu, 6 Jul 2023 10:26:38 +0800 Subject: [PATCH] add PG_TRY --- src/common/backend/parser/analyze.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/common/backend/parser/analyze.cpp b/src/common/backend/parser/analyze.cpp index 61534896f..a444c2236 100644 --- a/src/common/backend/parser/analyze.cpp +++ b/src/common/backend/parser/analyze.cpp @@ -4430,10 +4430,20 @@ static Query* transformDeclareCursorStmt(ParseState* pstate, DeclareCursorStmt* } /*除WITH HOLD游标外,根据DeclareCursorName对使用的row type形成依赖*/ - if (!(stmt->options & CURSOR_OPT_HOLD)) { - u_sess->analyze_cxt.DeclareCursorName = stmt->portalname; + PG_TRY(); + { + if (!(stmt->options & CURSOR_OPT_HOLD)) { + u_sess->analyze_cxt.DeclareCursorName = stmt->portalname; + } + result = transformStmt(pstate, stmt->query); } - result = transformStmt(pstate, stmt->query); + PG_CATCH(); + { + u_sess->analyze_cxt.DeclareCursorName = NULL; + PG_RE_THROW(); + } + PG_END_TRY(); + u_sess->analyze_cxt.DeclareCursorName = NULL; /* Grammar should not have allowed anything but SELECT */