mirror of https://github.com/citusdata/citus.git
33 lines
1.4 KiB
SQL
33 lines
1.4 KiB
SQL
-- columnar--10.1-1--10.2-1.sql
|
|
|
|
-- For a proper mapping between tid & (stripe, row_num), add a new column to
|
|
-- columnar.stripe and define a BTREE index on this column.
|
|
-- 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.
|
|
--
|
|
-- For simplicity, we calculate MAX(row_count) value across all the stripes
|
|
-- of all the columanar tables and then use it to populate first_row_number
|
|
-- column. This would introduce some gaps however we are okay with that since
|
|
-- it's already the case with regular INSERT/COPY's.
|
|
DO $$
|
|
DECLARE
|
|
max_row_count bigint;
|
|
-- this should be equal to columnar_storage.h/COLUMNAR_FIRST_ROW_NUMBER
|
|
COLUMNAR_FIRST_ROW_NUMBER constant bigint := 1;
|
|
BEGIN
|
|
SELECT MAX(row_count) INTO max_row_count FROM columnar.stripe;
|
|
UPDATE columnar.stripe SET first_row_number = COLUMNAR_FIRST_ROW_NUMBER +
|
|
(stripe_num - 1) * max_row_count;
|
|
END;
|
|
$$;
|
|
|
|
#include "udfs/upgrade_columnar_storage/10.2-1.sql"
|
|
#include "udfs/downgrade_columnar_storage/10.2-1.sql"
|
|
|
|
-- upgrade storage for all columnar relations
|
|
PERFORM citus_internal.upgrade_columnar_storage(c.oid) FROM pg_class c, pg_am a
|
|
WHERE c.relam = a.oid AND amname = 'columnar';
|