From d6c667946c4009be5a3c73029a2b75555467a957 Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Sat, 29 Jun 2019 22:38:29 +0200 Subject: [PATCH] Fix citus_executor_name mapping by reimplementing it in C --- .../distributed/citus--8.2-3--8.2-4.sql | 8 +++ src/backend/distributed/citus.control | 2 +- .../distributed/executor/query_stats.c | 62 +++++++++++++++++++ src/test/regress/expected/multi_extension.out | 6 ++ src/test/regress/sql/multi_extension.sql | 6 ++ 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 src/backend/distributed/citus--8.2-3--8.2-4.sql diff --git a/src/backend/distributed/citus--8.2-3--8.2-4.sql b/src/backend/distributed/citus--8.2-3--8.2-4.sql new file mode 100644 index 000000000..424da426e --- /dev/null +++ b/src/backend/distributed/citus--8.2-3--8.2-4.sql @@ -0,0 +1,8 @@ +/* citus--8.2-3--8.2-4 */ + +CREATE OR REPLACE FUNCTION pg_catalog.citus_executor_name(executor_type int) +RETURNS text +LANGUAGE C STRICT +AS 'MODULE_PATHNAME', $$citus_executor_name$$; +COMMENT ON FUNCTION pg_catalog.citus_executor_name(int) +IS 'return the name of the external based for the value in citus_stat_statements() output'; diff --git a/src/backend/distributed/citus.control b/src/backend/distributed/citus.control index 8570537f0..4ca54d902 100644 --- a/src/backend/distributed/citus.control +++ b/src/backend/distributed/citus.control @@ -1,6 +1,6 @@ # Citus extension comment = 'Citus distributed database' -default_version = '8.2-3' +default_version = '8.2-4' module_pathname = '$libdir/citus' relocatable = false schema = pg_catalog diff --git a/src/backend/distributed/executor/query_stats.c b/src/backend/distributed/executor/query_stats.c index 6b3cfd041..160ce1599 100644 --- a/src/backend/distributed/executor/query_stats.c +++ b/src/backend/distributed/executor/query_stats.c @@ -12,9 +12,14 @@ #include "fmgr.h" #include "distributed/query_stats.h" +#include "utils/builtins.h" PG_FUNCTION_INFO_V1(citus_stat_statements_reset); PG_FUNCTION_INFO_V1(citus_query_stats); +PG_FUNCTION_INFO_V1(citus_executor_name); + + +static char * CitusExecutorName(MultiExecutorType executorType); /* placeholder for InitializeCitusQueryStats */ @@ -58,3 +63,60 @@ citus_query_stats(PG_FUNCTION_ARGS) "Citus Enterprise"))); PG_RETURN_VOID(); } + + +/* + * citus_executor_name is a UDF that returns the name of the executor + * given the internal enum value. + */ +Datum +citus_executor_name(PG_FUNCTION_ARGS) +{ + MultiExecutorType executorType = PG_GETARG_UINT32(0); + + char *executorName = CitusExecutorName(executorType); + + PG_RETURN_TEXT_P(cstring_to_text(executorName)); +} + + +/* + * CitusExecutorName returns the name of the executor given the internal + * enum value. + */ +static char * +CitusExecutorName(MultiExecutorType executorType) +{ + switch (executorType) + { + case MULTI_EXECUTOR_ADAPTIVE: + { + return "adaptive"; + } + + case MULTI_EXECUTOR_REAL_TIME: + { + return "real-time"; + } + + case MULTI_EXECUTOR_TASK_TRACKER: + { + return "task-tracker"; + } + + case MULTI_EXECUTOR_ROUTER: + { + return "router"; + } + + case MULTI_EXECUTOR_COORDINATOR_INSERT_SELECT: + { + return "insert-select"; + } + + default: + { + return "unknown"; + } + } +} diff --git a/src/test/regress/expected/multi_extension.out b/src/test/regress/expected/multi_extension.out index d9c0f4ddf..41c9de872 100644 --- a/src/test/regress/expected/multi_extension.out +++ b/src/test/regress/expected/multi_extension.out @@ -155,6 +155,12 @@ ALTER EXTENSION citus UPDATE TO '8.0-9'; ALTER EXTENSION citus UPDATE TO '8.0-10'; ALTER EXTENSION citus UPDATE TO '8.0-11'; ALTER EXTENSION citus UPDATE TO '8.0-12'; +ALTER EXTENSION citus UPDATE TO '8.0-13'; +ALTER EXTENSION citus UPDATE TO '8.1-1'; +ALTER EXTENSION citus UPDATE TO '8.2-1'; +ALTER EXTENSION citus UPDATE TO '8.2-2'; +ALTER EXTENSION citus UPDATE TO '8.2-3'; +ALTER EXTENSION citus UPDATE TO '8.2-4'; -- show running version SHOW citus.version; citus.version diff --git a/src/test/regress/sql/multi_extension.sql b/src/test/regress/sql/multi_extension.sql index 19a852472..ba5f55e50 100644 --- a/src/test/regress/sql/multi_extension.sql +++ b/src/test/regress/sql/multi_extension.sql @@ -155,6 +155,12 @@ ALTER EXTENSION citus UPDATE TO '8.0-9'; ALTER EXTENSION citus UPDATE TO '8.0-10'; ALTER EXTENSION citus UPDATE TO '8.0-11'; ALTER EXTENSION citus UPDATE TO '8.0-12'; +ALTER EXTENSION citus UPDATE TO '8.0-13'; +ALTER EXTENSION citus UPDATE TO '8.1-1'; +ALTER EXTENSION citus UPDATE TO '8.2-1'; +ALTER EXTENSION citus UPDATE TO '8.2-2'; +ALTER EXTENSION citus UPDATE TO '8.2-3'; +ALTER EXTENSION citus UPDATE TO '8.2-4'; -- show running version SHOW citus.version;