From ab1eda874b0a0e0cf3c0b30c818e03c12f1664d7 Mon Sep 17 00:00:00 2001 From: Nikos Armenatzoglou Date: Tue, 2 Aug 2016 15:00:14 -0700 Subject: [PATCH] Allow setting codegen guc to ON only if code generation is supported by the build --- src/backend/executor/execProcnode.c | 14 ++++++++------ src/backend/utils/misc/guc_gp.c | 26 ++++++++++++++++++++------ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/backend/executor/execProcnode.c b/src/backend/executor/execProcnode.c index 3e0723800a..30691b8ab7 100644 --- a/src/backend/executor/execProcnode.c +++ b/src/backend/executor/execProcnode.c @@ -1852,12 +1852,14 @@ ExecEndNode(PlanState *node) break; } - /* - * if codegen guc is true, then assert if CodegenManager is NULL - */ - AssertImply(codegen, NULL != node->CodegenManager); - CodeGeneratorManagerDestroy(node->CodegenManager); - node->CodegenManager = NULL; + if (codegen) { + /* + * if codegen guc is true, then assert if CodegenManager is NULL + */ + Assert(NULL != node->CodegenManager); + CodeGeneratorManagerDestroy(node->CodegenManager); + node->CodegenManager = NULL; + } estate->currentSliceIdInPlan = origSliceIdInPlan; estate->currentExecutingSliceId = origExecutingSliceId; diff --git a/src/backend/utils/misc/guc_gp.c b/src/backend/utils/misc/guc_gp.c index 63579ad06d..722ce8ad68 100644 --- a/src/backend/utils/misc/guc_gp.c +++ b/src/backend/utils/misc/guc_gp.c @@ -85,6 +85,7 @@ static const char *assign_optimizer_log_failure(const char *newval, static const char *assign_optimizer_minidump(const char *newval, bool doit, GucSource source); static bool assign_optimizer(bool newval, bool doit, GucSource source); +static bool assign_codegen(bool newval, bool doit, GucSource source); static const char *assign_optimizer_cost_model(const char *newval, bool doit, GucSource source); static const char *assign_gp_workfile_caching_loglevel(const char *newval, @@ -3362,7 +3363,7 @@ struct config_bool ConfigureNamesBool_gp[] = #else false, #endif - NULL, NULL + assign_codegen, NULL }, { @@ -3372,7 +3373,7 @@ struct config_bool ConfigureNamesBool_gp[] = GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT }, &codegen, - false, NULL, NULL + false, assign_codegen, NULL }, { @@ -3382,12 +3383,12 @@ struct config_bool ConfigureNamesBool_gp[] = GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE }, &codegen_validate_functions, -#ifdef USE_ASSERT_CHECKING - true, NULL, NULL /* true by default on debug builds. */ +#if defined(USE_ASSERT_CHECKING) && defined(USE_CODEGEN) + true, /* true by default on debug builds. */ #else - false, NULL, NULL + false, #endif - + assign_codegen, NULL }, /* End-of-list marker */ { @@ -5937,6 +5938,19 @@ assign_optimizer(bool newval, bool doit, GucSource source) return true; } +static bool +assign_codegen(bool newval, bool doit, GucSource source) +{ +#ifndef USE_CODEGEN + if (newval) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("Code generation is not supported by this build"))); +#endif + + return true; +} + static bool assign_dispatch_log_stats(bool newval, bool doit, GucSource source) { -- GitLab