From feef9206facc5c5f506661de4a81d96ef059b095 Mon Sep 17 00:00:00 2001 From: Sven Klemm <sven@timescale.com> Date: Fri, 31 Mar 2023 08:22:57 +0200 Subject: [PATCH] Add _timescaledb_functions schema Currently internal user objects like chunks and our functions live in the same schema making locking down that schema hard. This patch adds a new schema _timescaledb_functions that is meant to be the schema used for timescaledb internal functions to allow separation of code and chunks or other user objects. --- sql/pre_install/schemas.sql | 3 ++- sql/updates/latest-dev.sql | 4 ++++ sql/updates/reverse-dev.sql | 2 ++ src/extension_constants.c | 1 + src/extension_constants.h | 2 ++ 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/sql/pre_install/schemas.sql b/sql/pre_install/schemas.sql index f7eba4774..4f55c8f09 100644 --- a/sql/pre_install/schemas.sql +++ b/sql/pre_install/schemas.sql @@ -5,11 +5,12 @@ SET LOCAL search_path TO pg_catalog, pg_temp; CREATE SCHEMA _timescaledb_catalog; +CREATE SCHEMA _timescaledb_functions; CREATE SCHEMA _timescaledb_internal; CREATE SCHEMA _timescaledb_cache; CREATE SCHEMA _timescaledb_config; CREATE SCHEMA timescaledb_experimental; CREATE SCHEMA timescaledb_information; -GRANT USAGE ON SCHEMA _timescaledb_cache, _timescaledb_catalog, _timescaledb_internal, _timescaledb_config, timescaledb_information, timescaledb_experimental TO PUBLIC; +GRANT USAGE ON SCHEMA _timescaledb_cache, _timescaledb_catalog, _timescaledb_functions, _timescaledb_internal, _timescaledb_config, timescaledb_information, timescaledb_experimental TO PUBLIC; diff --git a/sql/updates/latest-dev.sql b/sql/updates/latest-dev.sql index 1a6ba8c92..a15b13e8f 100644 --- a/sql/updates/latest-dev.sql +++ b/sql/updates/latest-dev.sql @@ -24,3 +24,7 @@ AS '@MODULE_PATHNAME@', 'ts_get_compressed_chunk_index_for_recompression' LANGUA DROP FUNCTION _timescaledb_internal.dimension_is_finite; DROP FUNCTION _timescaledb_internal.dimension_slice_get_constraint_sql; + +CREATE SCHEMA _timescaledb_functions; +GRANT USAGE ON SCHEMA _timescaledb_functions TO PUBLIC; + diff --git a/sql/updates/reverse-dev.sql b/sql/updates/reverse-dev.sql index f9bda5669..666d42d81 100644 --- a/sql/updates/reverse-dev.sql +++ b/sql/updates/reverse-dev.sql @@ -99,3 +99,5 @@ BEGIN END $BODY$ SET search_path TO pg_catalog, pg_temp; +DROP SCHEMA _timescaledb_functions; + diff --git a/src/extension_constants.c b/src/extension_constants.c index 6248adcfe..85e4413e5 100644 --- a/src/extension_constants.c +++ b/src/extension_constants.c @@ -7,6 +7,7 @@ const char *const ts_extension_schema_names[] = { [TS_CATALOG_SCHEMA] = CATALOG_SCHEMA_NAME, + [TS_FUNCTIONS_SCHEMA] = FUNCTIONS_SCHEMA_NAME, [TS_INTERNAL_SCHEMA] = INTERNAL_SCHEMA_NAME, [TS_CACHE_SCHEMA] = CACHE_SCHEMA_NAME, [TS_CONFIG_SCHEMA] = CONFIG_SCHEMA_NAME, diff --git a/src/extension_constants.h b/src/extension_constants.h index 7c59239ba..6aa030f9e 100644 --- a/src/extension_constants.h +++ b/src/extension_constants.h @@ -24,6 +24,7 @@ typedef enum TsExtensionSchemas { TS_CATALOG_SCHEMA, + TS_FUNCTIONS_SCHEMA, TS_INTERNAL_SCHEMA, TS_CACHE_SCHEMA, TS_CONFIG_SCHEMA, @@ -35,6 +36,7 @@ typedef enum TsExtensionSchemas #define NUM_TIMESCALEDB_SCHEMAS _TS_MAX_SCHEMA #define CATALOG_SCHEMA_NAME "_timescaledb_catalog" +#define FUNCTIONS_SCHEMA_NAME "_timescaledb_functions" #define INTERNAL_SCHEMA_NAME "_timescaledb_internal" #define CACHE_SCHEMA_NAME "_timescaledb_cache" #define CONFIG_SCHEMA_NAME "_timescaledb_config"