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 {