From 409e828445cd6ad411831d02d1c7196dc57f3cfe Mon Sep 17 00:00:00 2001 From: chenbd Date: Fri, 3 Mar 2023 11:39:34 -0500 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0dolphin=20hook=20plpgsql=5Fpa?= =?UTF-8?q?rser=5Fsetup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/pl/plpgsql/src/pl_exec.cpp | 7 ++++++- src/include/knl/knl_session.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/common/pl/plpgsql/src/pl_exec.cpp b/src/common/pl/plpgsql/src/pl_exec.cpp index bf903fdb5..83b942dfb 100644 --- a/src/common/pl/plpgsql/src/pl_exec.cpp +++ b/src/common/pl/plpgsql/src/pl_exec.cpp @@ -5777,7 +5777,12 @@ static void exec_prepare_plan(PLpgSQL_execstate* estate, PLpgSQL_expr* expr, int */ #if (!defined(ENABLE_MULTIPLE_NODES)) && (!defined(ENABLE_PRIVATEGAUSS)) 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); + if (u_sess->hook_cxt.plpgsqlParserSetHook != NULL) { + plan = SPI_prepare_params(expr->query, + (ParserSetupHook)u_sess->hook_cxt.plpgsqlParserSetHook, (void*)expr, cursorOptions, NULL); + } else { + plan = SPI_prepare_params(expr->query, (ParserSetupHook)plpgsql_parser_setup, (void*)expr, cursorOptions, NULL); + } } else #endif plan = SPI_prepare_params(expr->query, (ParserSetupHook)plpgsql_parser_setup, (void*)expr, cursorOptions); diff --git a/src/include/knl/knl_session.h b/src/include/knl/knl_session.h index c06b8b2be..490e7f09b 100644 --- a/src/include/knl/knl_session.h +++ b/src/include/knl/knl_session.h @@ -2736,6 +2736,7 @@ typedef struct knl_u_hook_context { void *plannerHook; void *pluginSearchCatHook; void *pluginCCHashEqFuncs; + void *plpgsqlParserSetHook; } knl_u_hook_context; /* PBE message flag */ typedef enum {