mirror of https://github.com/citusdata/citus.git
Combine sql changes in columnar
parent
5b01917e12
commit
2d6ba8e4ee
|
@ -28,7 +28,9 @@ CREATE TABLE IF NOT EXISTS stripe (
|
||||||
chunk_row_count int NOT NULL,
|
chunk_row_count int NOT NULL,
|
||||||
row_count bigint NOT NULL,
|
row_count bigint NOT NULL,
|
||||||
chunk_group_count int NOT NULL,
|
chunk_group_count int NOT NULL,
|
||||||
PRIMARY KEY (storage_id, stripe_num)
|
first_row_number bigint NOT NULL,
|
||||||
|
PRIMARY KEY (storage_id, stripe_num),
|
||||||
|
CONSTRAINT stripe_first_row_number_idx UNIQUE (storage_id, first_row_number)
|
||||||
) WITH (user_catalog_table = true);
|
) WITH (user_catalog_table = true);
|
||||||
|
|
||||||
COMMENT ON TABLE stripe IS 'Columnar per stripe metadata';
|
COMMENT ON TABLE stripe IS 'Columnar per stripe metadata';
|
||||||
|
@ -38,8 +40,7 @@ CREATE TABLE IF NOT EXISTS chunk_group (
|
||||||
stripe_num bigint NOT NULL,
|
stripe_num bigint NOT NULL,
|
||||||
chunk_group_num int NOT NULL,
|
chunk_group_num int NOT NULL,
|
||||||
row_count bigint NOT NULL,
|
row_count bigint NOT NULL,
|
||||||
PRIMARY KEY (storage_id, stripe_num, chunk_group_num),
|
PRIMARY KEY (storage_id, stripe_num, chunk_group_num)
|
||||||
FOREIGN KEY (storage_id, stripe_num) REFERENCES stripe(storage_id, stripe_num) ON DELETE CASCADE
|
|
||||||
);
|
);
|
||||||
|
|
||||||
COMMENT ON TABLE chunk_group IS 'Columnar chunk group metadata';
|
COMMENT ON TABLE chunk_group IS 'Columnar chunk group metadata';
|
||||||
|
@ -59,8 +60,7 @@ CREATE TABLE IF NOT EXISTS chunk (
|
||||||
value_compression_level int NOT NULL,
|
value_compression_level int NOT NULL,
|
||||||
value_decompressed_length bigint NOT NULL,
|
value_decompressed_length bigint NOT NULL,
|
||||||
value_count bigint NOT NULL,
|
value_count bigint NOT NULL,
|
||||||
PRIMARY KEY (storage_id, stripe_num, attr_num, chunk_group_num),
|
PRIMARY KEY (storage_id, stripe_num, attr_num, chunk_group_num)
|
||||||
FOREIGN KEY (storage_id, stripe_num, chunk_group_num) REFERENCES chunk_group(storage_id, stripe_num, chunk_group_num) ON DELETE CASCADE
|
|
||||||
) WITH (user_catalog_table = true);
|
) WITH (user_catalog_table = true);
|
||||||
|
|
||||||
COMMENT ON TABLE chunk IS 'Columnar per chunk metadata';
|
COMMENT ON TABLE chunk IS 'Columnar per chunk metadata';
|
||||||
|
@ -139,57 +139,6 @@ 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"
|
-- (this function being dropped in 10.0.3)->#include "udfs/columnar_ensure_objects_exist/10.0-1.sql"
|
||||||
|
|
||||||
-- citus_internal.columnar_ensure_objects_exist is an internal helper function to create
|
|
||||||
-- missing objects, anything related to the table access methods.
|
|
||||||
-- Since the API for table access methods is only available in PG12 we can't create these
|
|
||||||
-- objects when Citus is installed in PG11. Once citus is installed on PG11 the user can
|
|
||||||
-- upgrade their database to PG12. Now they require the table access method objects that
|
|
||||||
-- we couldn't create before.
|
|
||||||
-- This internal function is called from `citus_finish_pg_upgrade` which the user is
|
|
||||||
-- required to call after a PG major upgrade.
|
|
||||||
-- CREATE OR REPLACE FUNCTION citus_internal.columnar_ensure_objects_exist()
|
|
||||||
-- RETURNS void
|
|
||||||
-- LANGUAGE plpgsql
|
|
||||||
-- SET search_path = pg_catalog
|
|
||||||
-- AS $ceoe$
|
|
||||||
-- BEGIN
|
|
||||||
|
|
||||||
-- when postgres is version 12 or above we need to create the tableam. If the tableam
|
|
||||||
-- exist we assume all objects have been created.
|
|
||||||
-- IF substring(current_Setting('server_version'), '\d+')::int >= 12 THEN
|
|
||||||
-- IF NOT EXISTS (SELECT 1 FROM pg_am WHERE amname = 'columnar') THEN
|
|
||||||
|
|
||||||
-- --#include "../columnar_handler/10.0-1.sql"
|
|
||||||
|
|
||||||
-- --#include "../alter_columnar_table_set/10.0-1.sql"
|
|
||||||
|
|
||||||
-- --#include "../alter_columnar_table_reset/10.0-1.sql"
|
|
||||||
|
|
||||||
-- -- add the missing objects to the extension
|
|
||||||
-- ALTER EXTENSION citus ADD FUNCTION columnar.columnar_handler(internal);
|
|
||||||
-- ALTER EXTENSION citus ADD ACCESS METHOD columnar;
|
|
||||||
-- ALTER EXTENSION citus ADD FUNCTION pg_catalog.alter_columnar_table_set(
|
|
||||||
-- table_name regclass,
|
|
||||||
-- chunk_group_row_limit int,
|
|
||||||
-- stripe_row_limit int,
|
|
||||||
-- compression name,
|
|
||||||
-- compression_level int);
|
|
||||||
-- ALTER EXTENSION citus ADD FUNCTION pg_catalog.alter_columnar_table_reset(
|
|
||||||
-- table_name regclass,
|
|
||||||
-- chunk_group_row_limit bool,
|
|
||||||
-- stripe_row_limit bool,
|
|
||||||
-- compression bool,
|
|
||||||
-- compression_level bool);
|
|
||||||
|
|
||||||
-- END IF;
|
|
||||||
-- END IF;
|
|
||||||
-- END;
|
|
||||||
-- $ceoe$;
|
|
||||||
|
|
||||||
--COMMENT ON FUNCTION citus_internal.columnar_ensure_objects_exist()
|
|
||||||
-- IS 'internal function to be called by pg_catalog.citus_finish_pg_upgrade responsible for creating the columnar objects';
|
|
||||||
|
|
||||||
|
|
||||||
RESET search_path;
|
RESET search_path;
|
||||||
|
|
||||||
-- columnar--10.0.-1 --10.0.2
|
-- columnar--10.0.-1 --10.0.2
|
||||||
|
@ -199,35 +148,14 @@ GRANT SELECT ON ALL tables IN SCHEMA columnar TO PUBLIC ;
|
||||||
-- columnar--10.0-3--10.1-1.sql
|
-- columnar--10.0-3--10.1-1.sql
|
||||||
|
|
||||||
-- Drop foreign keys between columnar metadata tables.
|
-- Drop foreign keys between columnar metadata tables.
|
||||||
-- Postgres assigns different names to those foreign keys in PG11, so act accordingly.
|
|
||||||
DO $proc$
|
|
||||||
BEGIN
|
|
||||||
IF substring(current_Setting('server_version'), '\d+')::int >= 12 THEN
|
|
||||||
EXECUTE $$
|
|
||||||
ALTER TABLE columnar.chunk DROP CONSTRAINT IF EXISTS chunk_storage_id_stripe_num_chunk_group_num_fkey;
|
|
||||||
ALTER TABLE columnar.chunk_group DROP CONSTRAINT IF EXISTS chunk_group_storage_id_stripe_num_fkey;
|
|
||||||
$$;
|
|
||||||
ELSE
|
|
||||||
EXECUTE $$
|
|
||||||
ALTER TABLE columnar.chunk DROP CONSTRAINT IF EXISTS chunk_storage_id_fkey;
|
|
||||||
ALTER TABLE columnar.chunk_group DROP CONSTRAINT IF EXISTS chunk_group_storage_id_fkey;
|
|
||||||
$$;
|
|
||||||
END IF;
|
|
||||||
END$proc$;
|
|
||||||
|
|
||||||
-- since we dropped pg11 support, we don't need to worry about missing
|
|
||||||
-- columnar objects when upgrading postgres
|
|
||||||
-- DROP FUNCTION citus_internal.columnar_ensure_objects_exist();
|
|
||||||
|
|
||||||
--10.1-1 -- 10.2-1
|
|
||||||
|
|
||||||
-- columnar--10.1-1--10.2-1.sql
|
-- columnar--10.1-1--10.2-1.sql
|
||||||
|
|
||||||
-- For a proper mapping between tid & (stripe, row_num), add a new column to
|
-- For a proper mapping between tid & (stripe, row_num), add a new column to
|
||||||
-- columnar.stripe and define a BTREE index on this column.
|
-- columnar.stripe and define a BTREE index on this column.
|
||||||
-- Also include storage_id column for per-relation scans.
|
-- Also include storage_id column for per-relation scans.
|
||||||
ALTER TABLE columnar.stripe ADD COLUMN first_row_number bigint;
|
|
||||||
CREATE INDEX stripe_first_row_number_idx ON columnar.stripe USING BTREE(storage_id, first_row_number);
|
|
||||||
|
|
||||||
-- Populate first_row_number column of columnar.stripe table.
|
-- Populate first_row_number column of columnar.stripe table.
|
||||||
--
|
--
|
||||||
|
@ -290,9 +218,6 @@ REVOKE SELECT ON columnar.chunk FROM PUBLIC;
|
||||||
--
|
--
|
||||||
-- To do that, drop stripe_first_row_number_idx and create a unique
|
-- To do that, drop stripe_first_row_number_idx and create a unique
|
||||||
-- constraint with the same name to keep the code change at minimum.
|
-- constraint with the same name to keep the code change at minimum.
|
||||||
DROP INDEX columnar.stripe_first_row_number_idx;
|
|
||||||
ALTER TABLE columnar.stripe ADD CONSTRAINT stripe_first_row_number_idx
|
|
||||||
UNIQUE (storage_id, first_row_number);
|
|
||||||
|
|
||||||
-- columnar--10.2-3--10.2-4.sql
|
-- columnar--10.2-3--10.2-4.sql
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue