mirror of https://github.com/citusdata/citus.git
117 lines
4.7 KiB
PL/PgSQL
117 lines
4.7 KiB
PL/PgSQL
CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_set(
|
|
table_name regclass,
|
|
chunk_group_row_limit int DEFAULT NULL,
|
|
stripe_row_limit int DEFAULT NULL,
|
|
compression name DEFAULT null,
|
|
compression_level int DEFAULT NULL)
|
|
RETURNS void
|
|
LANGUAGE C
|
|
AS 'MODULE_PATHNAME', 'alter_columnar_table_set';
|
|
|
|
COMMENT ON FUNCTION pg_catalog.alter_columnar_table_set(
|
|
table_name regclass,
|
|
chunk_group_row_limit int,
|
|
stripe_row_limit int,
|
|
compression name,
|
|
compression_level int)
|
|
IS 'set one or more options on a columnar table, when set to NULL no change is made';
|
|
CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_reset(
|
|
table_name regclass,
|
|
chunk_group_row_limit bool DEFAULT false,
|
|
stripe_row_limit bool DEFAULT false,
|
|
compression bool DEFAULT false,
|
|
compression_level bool DEFAULT false)
|
|
RETURNS void
|
|
LANGUAGE C
|
|
AS 'MODULE_PATHNAME', 'alter_columnar_table_reset';
|
|
|
|
COMMENT ON FUNCTION pg_catalog.alter_columnar_table_reset(
|
|
table_name regclass,
|
|
chunk_group_row_limit bool,
|
|
stripe_row_limit bool,
|
|
compression bool,
|
|
compression_level bool)
|
|
IS 'reset on or more options on a columnar table to the system defaults';
|
|
|
|
CREATE OR REPLACE FUNCTION columnar_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 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';
|
|
|
|
DROP VIEW columnar.options;
|
|
DROP VIEW columnar.stripe;
|
|
DROP VIEW columnar.chunk_group;
|
|
DROP VIEW columnar.chunk;
|
|
DROP VIEW columnar.storage;
|
|
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;
|
|
GRANT SELECT ON columnar.stripe TO PUBLIC;
|
|
GRANT SELECT ON columnar.chunk_group TO PUBLIC;
|
|
|
|
-- detach relations from citus_columnar
|
|
|
|
ALTER EXTENSION citus_columnar DROP SCHEMA columnar;
|
|
ALTER EXTENSION citus_columnar DROP SEQUENCE columnar.storageid_seq;
|
|
-- columnar tables
|
|
ALTER EXTENSION citus_columnar DROP TABLE columnar.options;
|
|
ALTER EXTENSION citus_columnar DROP TABLE columnar.stripe;
|
|
ALTER EXTENSION citus_columnar DROP TABLE columnar.chunk_group;
|
|
ALTER EXTENSION citus_columnar DROP TABLE columnar.chunk;
|
|
|
|
ALTER EXTENSION citus_columnar DROP FUNCTION columnar.columnar_handler;
|
|
ALTER EXTENSION citus_columnar DROP ACCESS METHOD columnar;
|
|
ALTER EXTENSION citus_columnar DROP FUNCTION pg_catalog.alter_columnar_table_set;
|
|
ALTER EXTENSION citus_columnar DROP FUNCTION pg_catalog.alter_columnar_table_reset;
|
|
|
|
-- functions under citus_internal for columnar
|
|
ALTER EXTENSION citus_columnar DROP FUNCTION citus_internal.upgrade_columnar_storage;
|
|
ALTER EXTENSION citus_columnar DROP FUNCTION citus_internal.downgrade_columnar_storage;
|
|
ALTER EXTENSION citus_columnar DROP FUNCTION citus_internal.columnar_ensure_am_depends_catalog;
|