From 3e849b966f1eb1c5814919651c57604c17edad96 Mon Sep 17 00:00:00 2001 From: chenxiaobin19 <1025221611@qq.com> Date: Thu, 11 Aug 2022 15:16:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AF=AD=E6=B3=95=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=8F=92=E4=BB=B6=E4=B8=8B=E6=89=A7=E8=A1=8C=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E8=BF=87=E7=A8=8B=E6=97=A0=E6=B3=95=E8=B5=B0=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89parser=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/pl/plpgsql/src/pl_exec.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/common/pl/plpgsql/src/pl_exec.cpp b/src/common/pl/plpgsql/src/pl_exec.cpp index ca84ee556..5365cb01e 100644 --- a/src/common/pl/plpgsql/src/pl_exec.cpp +++ b/src/common/pl/plpgsql/src/pl_exec.cpp @@ -5395,8 +5395,16 @@ static void exec_prepare_plan(PLpgSQL_execstate* estate, PLpgSQL_expr* expr, int /* * Generate and save the plan + * + * Self-defined parser is needed for dolphin to execute procedural program + * currently. When *parser_hook* is given NULL in pg_parse_query, it would + * use self-defined parser hook. */ - plan = SPI_prepare_params(expr->query, (ParserSetupHook)plpgsql_parser_setup, (void*)expr, cursorOptions); + if (u_sess->proc_cxt.MyDatabaseId != InvalidOid && DB_IS_CMPT(B_FORMAT) && u_sess->attr.attr_sql.dolphin) { + plan = SPI_prepare_params(expr->query, (ParserSetupHook)plpgsql_parser_setup, (void*)expr, cursorOptions, NULL); + } else { + plan = SPI_prepare_params(expr->query, (ParserSetupHook)plpgsql_parser_setup, (void*)expr, cursorOptions); + } if (plan == NULL) { /* Some SPI errors deserve specific error messages */ switch (SPI_result) {