mirror of https://github.com/citusdata/citus.git
fix downgrade script for `chunk_group_size_limit`
- In citus_columnar--14.0-1--13.2-1 remove the new column that was introduced in 14.0.1pull/8202/head
parent
07a043deb6
commit
b0dcc11501
|
|
@ -1,2 +1,120 @@
|
||||||
-- citus_columnar--14.0-1--13.2-1
|
-- citus_columnar--14.0-1--13.2-1
|
||||||
-- downgrade version to 13.2-1
|
-- downgrade version to 13.2-1
|
||||||
|
|
||||||
|
|
||||||
|
-- Remove column `chunk_group_size_limit`
|
||||||
|
ALTER TABLE columnar_internal.options DROP COLUMN chunk_group_size_limit;
|
||||||
|
|
||||||
|
-- Remove column `chunk_group_size_limit` by redefining the functions & views
|
||||||
|
DROP VIEW IF EXISTS columnar.options;
|
||||||
|
DROP FUNCTION IF EXISTS alter_columnar_table_set, alter_columnar_table_reset;
|
||||||
|
|
||||||
|
|
||||||
|
-- Redefine
|
||||||
|
CREATE VIEW columnar.options WITH (security_barrier) AS
|
||||||
|
SELECT regclass AS relation, chunk_group_row_limit,
|
||||||
|
stripe_row_limit, compression, compression_level
|
||||||
|
FROM columnar_internal.options o, pg_class c
|
||||||
|
WHERE o.regclass = c.oid
|
||||||
|
AND pg_has_role(c.relowner, 'USAGE');
|
||||||
|
COMMENT ON VIEW columnar.options
|
||||||
|
IS 'Columnar options for tables on which the current user has ownership privileges.';
|
||||||
|
GRANT SELECT ON columnar.options TO PUBLIC;
|
||||||
|
|
||||||
|
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 plpgsql AS
|
||||||
|
$alter_columnar_table_set$
|
||||||
|
declare
|
||||||
|
noop BOOLEAN := true;
|
||||||
|
cmd TEXT := 'ALTER TABLE ' || table_name::text || ' SET (';
|
||||||
|
begin
|
||||||
|
if (chunk_group_row_limit is not null) then
|
||||||
|
if (not noop) then cmd := cmd || ', '; end if;
|
||||||
|
cmd := cmd || 'columnar.chunk_group_row_limit=' || chunk_group_row_limit;
|
||||||
|
noop := false;
|
||||||
|
end if;
|
||||||
|
if (stripe_row_limit is not null) then
|
||||||
|
if (not noop) then cmd := cmd || ', '; end if;
|
||||||
|
cmd := cmd || 'columnar.stripe_row_limit=' || stripe_row_limit;
|
||||||
|
noop := false;
|
||||||
|
end if;
|
||||||
|
if (compression is not null) then
|
||||||
|
if (not noop) then cmd := cmd || ', '; end if;
|
||||||
|
cmd := cmd || 'columnar.compression=' || compression;
|
||||||
|
noop := false;
|
||||||
|
end if;
|
||||||
|
if (compression_level is not null) then
|
||||||
|
if (not noop) then cmd := cmd || ', '; end if;
|
||||||
|
cmd := cmd || 'columnar.compression_level=' || compression_level;
|
||||||
|
noop := false;
|
||||||
|
end if;
|
||||||
|
cmd := cmd || ')';
|
||||||
|
if (not noop) then
|
||||||
|
execute cmd;
|
||||||
|
end if;
|
||||||
|
return;
|
||||||
|
end;
|
||||||
|
$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 plpgsql AS
|
||||||
|
$alter_columnar_table_reset$
|
||||||
|
declare
|
||||||
|
noop BOOLEAN := true;
|
||||||
|
cmd TEXT := 'ALTER TABLE ' || table_name::text || ' RESET (';
|
||||||
|
begin
|
||||||
|
if (chunk_group_row_limit) then
|
||||||
|
if (not noop) then cmd := cmd || ', '; end if;
|
||||||
|
cmd := cmd || 'columnar.chunk_group_row_limit';
|
||||||
|
noop := false;
|
||||||
|
end if;
|
||||||
|
if (stripe_row_limit) then
|
||||||
|
if (not noop) then cmd := cmd || ', '; end if;
|
||||||
|
cmd := cmd || 'columnar.stripe_row_limit';
|
||||||
|
noop := false;
|
||||||
|
end if;
|
||||||
|
if (compression) then
|
||||||
|
if (not noop) then cmd := cmd || ', '; end if;
|
||||||
|
cmd := cmd || 'columnar.compression';
|
||||||
|
noop := false;
|
||||||
|
end if;
|
||||||
|
if (compression_level) then
|
||||||
|
if (not noop) then cmd := cmd || ', '; end if;
|
||||||
|
cmd := cmd || 'columnar.compression_level';
|
||||||
|
noop := false;
|
||||||
|
end if;
|
||||||
|
cmd := cmd || ')';
|
||||||
|
if (not noop) then
|
||||||
|
execute cmd;
|
||||||
|
end if;
|
||||||
|
return;
|
||||||
|
end;
|
||||||
|
$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';
|
||||||
Loading…
Reference in New Issue