mirror of https://github.com/citusdata/citus.git
Rename stripeid, chunkid, and attnum
parent
9114fd4050
commit
8270b598b6
|
@ -17,34 +17,34 @@ COMMENT ON TABLE options IS 'columnar table specific options, maintained by alte
|
||||||
|
|
||||||
CREATE TABLE stripe (
|
CREATE TABLE stripe (
|
||||||
storageid bigint NOT NULL,
|
storageid bigint NOT NULL,
|
||||||
stripeid bigint NOT NULL,
|
stripe_num bigint NOT NULL,
|
||||||
file_offset bigint NOT NULL,
|
file_offset bigint NOT NULL,
|
||||||
data_length bigint NOT NULL,
|
data_length bigint NOT NULL,
|
||||||
column_count int NOT NULL,
|
column_count int NOT NULL,
|
||||||
chunk_count int NOT NULL,
|
chunk_count int NOT NULL,
|
||||||
chunk_row_count int NOT NULL,
|
chunk_row_count int NOT NULL,
|
||||||
row_count bigint NOT NULL,
|
row_count bigint NOT NULL,
|
||||||
PRIMARY KEY (storageid, stripeid)
|
PRIMARY KEY (storageid, stripe_num)
|
||||||
) 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';
|
||||||
|
|
||||||
CREATE TABLE chunk_group (
|
CREATE TABLE chunk_group (
|
||||||
storageid bigint NOT NULL,
|
storageid bigint NOT NULL,
|
||||||
stripeid bigint NOT NULL,
|
stripe_num bigint NOT NULL,
|
||||||
chunkid int NOT NULL,
|
chunk_num int NOT NULL,
|
||||||
row_count bigint NOT NULL,
|
row_count bigint NOT NULL,
|
||||||
PRIMARY KEY (storageid, stripeid, chunkid),
|
PRIMARY KEY (storageid, stripe_num, chunk_num),
|
||||||
FOREIGN KEY (storageid, stripeid) REFERENCES stripe(storageid, stripeid) ON DELETE CASCADE
|
FOREIGN KEY (storageid, stripe_num) REFERENCES stripe(storageid, 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';
|
||||||
|
|
||||||
CREATE TABLE chunk (
|
CREATE TABLE chunk (
|
||||||
storageid bigint NOT NULL,
|
storageid bigint NOT NULL,
|
||||||
stripeid bigint NOT NULL,
|
stripe_num bigint NOT NULL,
|
||||||
attnum int NOT NULL,
|
attr_num int NOT NULL,
|
||||||
chunkid int NOT NULL,
|
chunk_num int NOT NULL,
|
||||||
minimum_value bytea,
|
minimum_value bytea,
|
||||||
maximum_value bytea,
|
maximum_value bytea,
|
||||||
value_stream_offset bigint NOT NULL,
|
value_stream_offset bigint NOT NULL,
|
||||||
|
@ -55,8 +55,8 @@ CREATE TABLE 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 (storageid, stripeid, attnum, chunkid),
|
PRIMARY KEY (storageid, stripe_num, attr_num, chunk_num),
|
||||||
FOREIGN KEY (storageid, stripeid, chunkid) REFERENCES chunk_group(storageid, stripeid, chunkid) ON DELETE CASCADE
|
FOREIGN KEY (storageid, stripe_num, chunk_num) REFERENCES chunk_group(storageid, stripe_num, chunk_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';
|
||||||
|
|
|
@ -45,11 +45,11 @@ $$ LANGUAGE plpgsql;
|
||||||
-- are chunk groups and chunks consistent?
|
-- are chunk groups and chunks consistent?
|
||||||
CREATE view chunk_group_consistency AS
|
CREATE view chunk_group_consistency AS
|
||||||
WITH a as (
|
WITH a as (
|
||||||
SELECT storageid, stripeid, chunkid, min(value_count) as row_count
|
SELECT storageid, stripe_num, chunk_num, min(value_count) as row_count
|
||||||
FROM columnar.chunk
|
FROM columnar.chunk
|
||||||
GROUP BY 1,2,3
|
GROUP BY 1,2,3
|
||||||
), b as (
|
), b as (
|
||||||
SELECT storageid, stripeid, chunkid, max(value_count) as row_count
|
SELECT storageid, stripe_num, chunk_num, max(value_count) as row_count
|
||||||
FROM columnar.chunk
|
FROM columnar.chunk
|
||||||
GROUP BY 1,2,3
|
GROUP BY 1,2,3
|
||||||
), c as (
|
), c as (
|
||||||
|
|
|
@ -173,10 +173,10 @@ INSERT INTO zero_col_heap SELECT * FROM zero_col_heap;
|
||||||
INSERT INTO zero_col_heap SELECT * FROM zero_col_heap;
|
INSERT INTO zero_col_heap SELECT * FROM zero_col_heap;
|
||||||
INSERT INTO zero_col_heap SELECT * FROM zero_col_heap;
|
INSERT INTO zero_col_heap SELECT * FROM zero_col_heap;
|
||||||
INSERT INTO zero_col SELECT * FROM zero_col_heap;
|
INSERT INTO zero_col SELECT * FROM zero_col_heap;
|
||||||
SELECT relname, stripeid, row_count FROM columnar.stripe a, pg_class b
|
SELECT relname, stripe_num, row_count FROM columnar.stripe a, pg_class b
|
||||||
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
||||||
ORDER BY 1,2,3;
|
ORDER BY 1,2,3;
|
||||||
relname | stripeid | row_count
|
relname | stripe_num | row_count
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
zero_col | 1 | 1
|
zero_col | 1 | 1
|
||||||
zero_col | 2 | 1
|
zero_col | 2 | 1
|
||||||
|
@ -185,17 +185,17 @@ ORDER BY 1,2,3;
|
||||||
zero_col | 5 | 64
|
zero_col | 5 | 64
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT relname, stripeid, value_count FROM columnar.chunk a, pg_class b
|
SELECT relname, stripe_num, value_count FROM columnar.chunk a, pg_class b
|
||||||
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
||||||
ORDER BY 1,2,3;
|
ORDER BY 1,2,3;
|
||||||
relname | stripeid | value_count
|
relname | stripe_num | value_count
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
(0 rows)
|
(0 rows)
|
||||||
|
|
||||||
SELECT relname, stripeid, chunkid, row_count FROM columnar.chunk_group a, pg_class b
|
SELECT relname, stripe_num, chunk_num, row_count FROM columnar.chunk_group a, pg_class b
|
||||||
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
||||||
ORDER BY 1,2,3,4;
|
ORDER BY 1,2,3,4;
|
||||||
relname | stripeid | chunkid | row_count
|
relname | stripe_num | chunk_num | row_count
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
zero_col | 1 | 0 | 1
|
zero_col | 1 | 0 | 1
|
||||||
zero_col | 2 | 0 | 1
|
zero_col | 2 | 0 | 1
|
||||||
|
|
|
@ -86,10 +86,10 @@ SELECT count(*) FROM t_stripes;
|
||||||
|
|
||||||
-- VACUUM FULL doesn't reclaim dropped columns, but converts them to NULLs
|
-- VACUUM FULL doesn't reclaim dropped columns, but converts them to NULLs
|
||||||
ALTER TABLE t DROP COLUMN a;
|
ALTER TABLE t DROP COLUMN a;
|
||||||
SELECT stripeid, attnum, chunkid, minimum_value IS NULL, maximum_value IS NULL
|
SELECT stripe_num, attr_num, chunk_num, minimum_value IS NULL, maximum_value IS NULL
|
||||||
FROM columnar.chunk a, pg_class b
|
FROM columnar.chunk a, pg_class b
|
||||||
WHERE a.storageid = columnar_relation_storageid(b.oid) AND b.relname='t' ORDER BY 1, 2, 3;
|
WHERE a.storageid = columnar_relation_storageid(b.oid) AND b.relname='t' ORDER BY 1, 2, 3;
|
||||||
stripeid | attnum | chunkid | ?column? | ?column?
|
stripe_num | attr_num | chunk_num | ?column? | ?column?
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
1 | 1 | 0 | f | f
|
1 | 1 | 0 | f | f
|
||||||
1 | 2 | 0 | f | f
|
1 | 2 | 0 | f | f
|
||||||
|
@ -100,10 +100,10 @@ WHERE a.storageid = columnar_relation_storageid(b.oid) AND b.relname='t' ORDER B
|
||||||
(6 rows)
|
(6 rows)
|
||||||
|
|
||||||
VACUUM FULL t;
|
VACUUM FULL t;
|
||||||
SELECT stripeid, attnum, chunkid, minimum_value IS NULL, maximum_value IS NULL
|
SELECT stripe_num, attr_num, chunk_num, minimum_value IS NULL, maximum_value IS NULL
|
||||||
FROM columnar.chunk a, pg_class b
|
FROM columnar.chunk a, pg_class b
|
||||||
WHERE a.storageid = columnar_relation_storageid(b.oid) AND b.relname='t' ORDER BY 1, 2, 3;
|
WHERE a.storageid = columnar_relation_storageid(b.oid) AND b.relname='t' ORDER BY 1, 2, 3;
|
||||||
stripeid | attnum | chunkid | ?column? | ?column?
|
stripe_num | attr_num | chunk_num | ?column? | ?column?
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
1 | 1 | 0 | t | t
|
1 | 1 | 0 | t | t
|
||||||
1 | 2 | 0 | f | f
|
1 | 2 | 0 | f | f
|
||||||
|
|
|
@ -49,11 +49,11 @@ $$ LANGUAGE plpgsql;
|
||||||
-- are chunk groups and chunks consistent?
|
-- are chunk groups and chunks consistent?
|
||||||
CREATE view chunk_group_consistency AS
|
CREATE view chunk_group_consistency AS
|
||||||
WITH a as (
|
WITH a as (
|
||||||
SELECT storageid, stripeid, chunkid, min(value_count) as row_count
|
SELECT storageid, stripe_num, chunk_num, min(value_count) as row_count
|
||||||
FROM columnar.chunk
|
FROM columnar.chunk
|
||||||
GROUP BY 1,2,3
|
GROUP BY 1,2,3
|
||||||
), b as (
|
), b as (
|
||||||
SELECT storageid, stripeid, chunkid, max(value_count) as row_count
|
SELECT storageid, stripe_num, chunk_num, max(value_count) as row_count
|
||||||
FROM columnar.chunk
|
FROM columnar.chunk
|
||||||
GROUP BY 1,2,3
|
GROUP BY 1,2,3
|
||||||
), c as (
|
), c as (
|
||||||
|
|
|
@ -128,15 +128,15 @@ INSERT INTO zero_col_heap SELECT * FROM zero_col_heap;
|
||||||
|
|
||||||
INSERT INTO zero_col SELECT * FROM zero_col_heap;
|
INSERT INTO zero_col SELECT * FROM zero_col_heap;
|
||||||
|
|
||||||
SELECT relname, stripeid, row_count FROM columnar.stripe a, pg_class b
|
SELECT relname, stripe_num, row_count FROM columnar.stripe a, pg_class b
|
||||||
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
||||||
ORDER BY 1,2,3;
|
ORDER BY 1,2,3;
|
||||||
|
|
||||||
SELECT relname, stripeid, value_count FROM columnar.chunk a, pg_class b
|
SELECT relname, stripe_num, value_count FROM columnar.chunk a, pg_class b
|
||||||
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
||||||
ORDER BY 1,2,3;
|
ORDER BY 1,2,3;
|
||||||
|
|
||||||
SELECT relname, stripeid, chunkid, row_count FROM columnar.chunk_group a, pg_class b
|
SELECT relname, stripe_num, chunk_num, row_count FROM columnar.chunk_group a, pg_class b
|
||||||
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
WHERE columnar_relation_storageid(b.oid)=a.storageid AND relname = 'zero_col'
|
||||||
ORDER BY 1,2,3,4;
|
ORDER BY 1,2,3,4;
|
||||||
|
|
||||||
|
|
|
@ -42,13 +42,13 @@ SELECT count(*) FROM t_stripes;
|
||||||
-- VACUUM FULL doesn't reclaim dropped columns, but converts them to NULLs
|
-- VACUUM FULL doesn't reclaim dropped columns, but converts them to NULLs
|
||||||
ALTER TABLE t DROP COLUMN a;
|
ALTER TABLE t DROP COLUMN a;
|
||||||
|
|
||||||
SELECT stripeid, attnum, chunkid, minimum_value IS NULL, maximum_value IS NULL
|
SELECT stripe_num, attr_num, chunk_num, minimum_value IS NULL, maximum_value IS NULL
|
||||||
FROM columnar.chunk a, pg_class b
|
FROM columnar.chunk a, pg_class b
|
||||||
WHERE a.storageid = columnar_relation_storageid(b.oid) AND b.relname='t' ORDER BY 1, 2, 3;
|
WHERE a.storageid = columnar_relation_storageid(b.oid) AND b.relname='t' ORDER BY 1, 2, 3;
|
||||||
|
|
||||||
VACUUM FULL t;
|
VACUUM FULL t;
|
||||||
|
|
||||||
SELECT stripeid, attnum, chunkid, minimum_value IS NULL, maximum_value IS NULL
|
SELECT stripe_num, attr_num, chunk_num, minimum_value IS NULL, maximum_value IS NULL
|
||||||
FROM columnar.chunk a, pg_class b
|
FROM columnar.chunk a, pg_class b
|
||||||
WHERE a.storageid = columnar_relation_storageid(b.oid) AND b.relname='t' ORDER BY 1, 2, 3;
|
WHERE a.storageid = columnar_relation_storageid(b.oid) AND b.relname='t' ORDER BY 1, 2, 3;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue