From 345b465b18b76e14589fed8cbcd8c17738c21fa3 Mon Sep 17 00:00:00 2001 From: Jeff Davis Date: Wed, 25 May 2022 12:43:12 -0700 Subject: [PATCH] tmp2 --- .../sql/citus_columnar--11.1-0--11.1-1.sql | 6 ++ .../columnar/sql/citus_columnar--11.1-1.sql | 96 +++++-------------- .../citus_columnar--11.1-1--11.1-0.sql | 6 ++ .../expected/upgrade_list_citus_objects.out | 22 +---- .../sql/upgrade_columnar_metapage_after.sql | 2 +- 5 files changed, 38 insertions(+), 94 deletions(-) diff --git a/src/backend/columnar/sql/citus_columnar--11.1-0--11.1-1.sql b/src/backend/columnar/sql/citus_columnar--11.1-0--11.1-1.sql index 72c8fbf48..42580ef82 100644 --- a/src/backend/columnar/sql/citus_columnar--11.1-0--11.1-1.sql +++ b/src/backend/columnar/sql/citus_columnar--11.1-0--11.1-1.sql @@ -120,6 +120,12 @@ REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA columnar FROM PUBLIC; ALTER SCHEMA columnar RENAME TO columnar_internal; REVOKE ALL PRIVILEGES ON SCHEMA columnar_internal FROM PUBLIC; +-- move citus_internal functions to columnar_internal + +ALTER FUNCTION citus_internal.upgrade_columnar_storage(regclass) SET SCHEMA columnar_internal; +ALTER FUNCTION citus_internal.downgrade_columnar_storage(regclass) SET SCHEMA columnar_internal; +ALTER FUNCTION citus_internal.columnar_ensure_am_depends_catalog() SET SCHEMA columnar_internal; + -- create columnar schema with public usage privileges CREATE SCHEMA columnar; diff --git a/src/backend/columnar/sql/citus_columnar--11.1-1.sql b/src/backend/columnar/sql/citus_columnar--11.1-1.sql index 689bf0b63..c1081aba2 100644 --- a/src/backend/columnar/sql/citus_columnar--11.1-1.sql +++ b/src/backend/columnar/sql/citus_columnar--11.1-1.sql @@ -134,9 +134,6 @@ IS 'reset on or more options on a columnar table to the system defaults'; END IF; END$proc$; --- add citus_internal schema -CREATE SCHEMA IF NOT EXISTS citus_internal; - -- (this function being dropped in 10.0.3)->#include "udfs/columnar_ensure_objects_exist/10.0-1.sql" RESET search_path; @@ -175,30 +172,6 @@ BEGIN END; $$; ---#include "udfs/upgrade_columnar_storage/10.2-1.sql" -CREATE OR REPLACE FUNCTION citus_internal.upgrade_columnar_storage(rel regclass) - RETURNS VOID - STRICT - LANGUAGE c AS 'MODULE_PATHNAME', $$upgrade_columnar_storage$$; - -COMMENT ON FUNCTION citus_internal.upgrade_columnar_storage(regclass) - IS 'function to upgrade the columnar storage, if necessary'; - - ---#include "udfs/downgrade_columnar_storage/10.2-1.sql" - -CREATE OR REPLACE FUNCTION citus_internal.downgrade_columnar_storage(rel regclass) - RETURNS VOID - STRICT - LANGUAGE c AS 'MODULE_PATHNAME', $$downgrade_columnar_storage$$; - -COMMENT ON FUNCTION citus_internal.downgrade_columnar_storage(regclass) - IS 'function to downgrade the columnar storage, if necessary'; - --- upgrade storage for all columnar relations -SELECT citus_internal.upgrade_columnar_storage(c.oid) FROM pg_class c, pg_am a - WHERE c.relam = a.oid AND amname = 'columnar'; - -- columnar--10.2-1--10.2-2.sql -- revoke read access for columnar.chunk from unprivileged @@ -221,49 +194,6 @@ REVOKE SELECT ON columnar.chunk FROM PUBLIC; -- columnar--10.2-3--10.2-4.sql -CREATE OR REPLACE FUNCTION citus_internal.columnar_ensure_am_depends_catalog() - RETURNS void - LANGUAGE plpgsql - SET search_path = pg_catalog -AS $func$ -BEGIN - INSERT INTO pg_depend - SELECT -- Define a dependency edge from "columnar table access method" .. - 'pg_am'::regclass::oid as classid, - (select oid from pg_am where amname = 'columnar') as objid, - 0 as objsubid, - -- ... to each object that is registered to pg_class and that lives - -- in "columnar" schema. That contains catalog tables, indexes - -- created on them and the sequences created in "columnar" schema. - -- - -- Given the possibility of user might have created their own objects - -- in columnar schema, we explicitly specify list of objects that we - -- are interested in. - 'pg_class'::regclass::oid as refclassid, - columnar_schema_members.relname::regclass::oid as refobjid, - 0 as refobjsubid, - 'n' as deptype - FROM (VALUES ('columnar.chunk'), - ('columnar.chunk_group'), - ('columnar.chunk_group_pkey'), - ('columnar.chunk_pkey'), - ('columnar.options'), - ('columnar.options_pkey'), - ('columnar.storageid_seq'), - ('columnar.stripe'), - ('columnar.stripe_first_row_number_idx'), - ('columnar.stripe_pkey') - ) columnar_schema_members(relname) - -- Avoid inserting duplicate entries into pg_depend. - EXCEPT TABLE pg_depend; -END; -$func$; -COMMENT ON FUNCTION citus_internal.columnar_ensure_am_depends_catalog() - IS 'internal function responsible for creating dependencies from columnar ' - 'table access method to the rel objects in columnar schema'; - - -SELECT citus_internal.columnar_ensure_am_depends_catalog(); -- columnar--11.0-2--11.1-1.sql @@ -376,8 +306,28 @@ REVOKE ALL PRIVILEGES ON SCHEMA columnar_internal FROM PUBLIC; CREATE SCHEMA columnar; GRANT USAGE ON SCHEMA columnar TO PUBLIC; +--#include "udfs/upgrade_columnar_storage/10.2-1.sql" +CREATE OR REPLACE FUNCTION columnar_internal.upgrade_columnar_storage(rel regclass) + RETURNS VOID + STRICT + LANGUAGE c AS 'MODULE_PATHNAME', $$upgrade_columnar_storage$$; + +COMMENT ON FUNCTION columnar_internal.upgrade_columnar_storage(regclass) + IS 'function to upgrade the columnar storage, if necessary'; + + +--#include "udfs/downgrade_columnar_storage/10.2-1.sql" + +CREATE OR REPLACE FUNCTION columnar_internal.downgrade_columnar_storage(rel regclass) + RETURNS VOID + STRICT + LANGUAGE c AS 'MODULE_PATHNAME', $$downgrade_columnar_storage$$; + +COMMENT ON FUNCTION columnar_internal.downgrade_columnar_storage(regclass) + IS 'function to downgrade the columnar storage, if necessary'; + -- update UDF to account for columnar_internal schema -CREATE OR REPLACE FUNCTION citus_internal.columnar_ensure_am_depends_catalog() +CREATE OR REPLACE FUNCTION columnar_internal.columnar_ensure_am_depends_catalog() RETURNS void LANGUAGE plpgsql SET search_path = pg_catalog @@ -422,10 +372,12 @@ BEGIN EXCEPT TABLE pg_depend; END; $func$; -COMMENT ON FUNCTION citus_internal.columnar_ensure_am_depends_catalog() +COMMENT ON FUNCTION columnar_internal.columnar_ensure_am_depends_catalog() IS 'internal function responsible for creating dependencies from columnar ' 'table access method to the rel objects in columnar schema'; +SELECT columnar_internal.columnar_ensure_am_depends_catalog(); + -- add utility function CREATE FUNCTION columnar.get_storage_id(regclass) RETURNS bigint diff --git a/src/backend/columnar/sql/downgrades/citus_columnar--11.1-1--11.1-0.sql b/src/backend/columnar/sql/downgrades/citus_columnar--11.1-1--11.1-0.sql index 02aab8648..a0eca6c6c 100644 --- a/src/backend/columnar/sql/downgrades/citus_columnar--11.1-1--11.1-0.sql +++ b/src/backend/columnar/sql/downgrades/citus_columnar--11.1-1--11.1-0.sql @@ -83,6 +83,12 @@ DROP FUNCTION columnar.get_storage_id(regclass); DROP SCHEMA columnar; +-- move columnar_internal functions back to citus_internal + +ALTER FUNCTION columnar_internal.upgrade_columnar_storage(regclass) SET SCHEMA citus_internal; +ALTER FUNCTION columnar_internal.downgrade_columnar_storage(regclass) SET SCHEMA citus_internal; +ALTER FUNCTION columnar_internal.columnar_ensure_am_depends_catalog() SET SCHEMA citus_internal; + ALTER SCHEMA columnar_internal RENAME TO columnar; GRANT USAGE ON SCHEMA columnar TO PUBLIC; GRANT SELECT ON columnar.options TO PUBLIC; diff --git a/src/test/regress/expected/upgrade_list_citus_objects.out b/src/test/regress/expected/upgrade_list_citus_objects.out index 2b5868018..04b7fe698 100644 --- a/src/test/regress/expected/upgrade_list_citus_objects.out +++ b/src/test/regress/expected/upgrade_list_citus_objects.out @@ -16,10 +16,7 @@ WHERE refclassid = 'pg_catalog.pg_extension'::pg_catalog.regclass ORDER BY 1; description --------------------------------------------------------------------- - access method columnar event trigger citus_cascade_to_partition - function alter_columnar_table_reset(regclass,boolean,boolean,boolean,boolean) - function alter_columnar_table_set(regclass,integer,integer,name,integer) function alter_distributed_table(regclass,text,integer,text,boolean) function alter_old_partitions_set_access_method(regclass,timestamp with time zone,name) function alter_role_if_exists(text,text) @@ -62,8 +59,6 @@ ORDER BY 1; function citus_finalize_upgrade_to_citus11(boolean) function citus_finish_pg_upgrade() function citus_get_active_worker_nodes() - function citus_internal.columnar_ensure_am_depends_catalog() - function citus_internal.downgrade_columnar_storage(regclass) function citus_internal.find_groupid_for_node(text,integer) function citus_internal.pg_dist_node_trigger_func() function citus_internal.pg_dist_rebalance_strategy_trigger_func() @@ -71,7 +66,6 @@ ORDER BY 1; function citus_internal.refresh_isolation_tester_prepared_statement() function citus_internal.replace_isolation_tester_func() function citus_internal.restore_isolation_tester_func() - function citus_internal.upgrade_columnar_storage(regclass) function citus_internal_add_colocation_metadata(integer,integer,integer,regtype,oid) function citus_internal_add_object_metadata(text,text[],text[],integer,integer,boolean) function citus_internal_add_partition_metadata(regclass,"char",text,integer,"char") @@ -128,8 +122,6 @@ ORDER BY 1; function citus_version() function column_name_to_column(regclass,text) function column_to_column_name(regclass,text) - function columnar.get_storage_id(regclass) - function columnar_internal.columnar_handler(internal) function coord_combine_agg(oid,cstring,anyelement) function coord_combine_agg_ffunc(internal,oid,cstring,anyelement) function coord_combine_agg_sfunc(internal,oid,cstring,anyelement) @@ -242,18 +234,11 @@ ORDER BY 1; function worker_save_query_explain_analyze(text,jsonb) schema citus schema citus_internal - schema columnar - schema columnar_internal - sequence columnar_internal.storageid_seq sequence pg_dist_colocationid_seq sequence pg_dist_groupid_seq sequence pg_dist_node_nodeid_seq sequence pg_dist_placement_placementid_seq sequence pg_dist_shardid_seq - table columnar_internal.chunk - table columnar_internal.chunk_group - table columnar_internal.options - table columnar_internal.stripe table pg_dist_authinfo table pg_dist_colocation table pg_dist_local_group @@ -278,12 +263,7 @@ ORDER BY 1; view citus_shards_on_worker view citus_stat_activity view citus_stat_statements - view columnar.chunk - view columnar.chunk_group - view columnar.options - view columnar.storage - view columnar.stripe view pg_dist_shard_placement view time_partitions -(269 rows) +(248 rows) diff --git a/src/test/regress/sql/upgrade_columnar_metapage_after.sql b/src/test/regress/sql/upgrade_columnar_metapage_after.sql index e42c0c8da..d015d0b0d 100644 --- a/src/test/regress/sql/upgrade_columnar_metapage_after.sql +++ b/src/test/regress/sql/upgrade_columnar_metapage_after.sql @@ -63,7 +63,7 @@ SELECT version_major, version_minor, reserved_stripe_id, reserved_row_number FROM columnar_storage_info('no_data_columnar_table'); -- table is already upgraded, make sure that upgrade_columnar_metapage is no-op -SELECT citus_internal.upgrade_columnar_storage(c.oid) +SELECT columnar_internal.upgrade_columnar_storage(c.oid) FROM pg_class c, pg_am a WHERE c.relam = a.oid AND amname = 'columnar' and relname = 'columnar_table_2';