mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-17 11:03:36 +08:00
Adjust DecompressChunk path generation to use the per chunk settings and not the hypertable settings when building compression info. This patch also fixes the missing chunk configuration generation in the update script which was masked by this bug.
76 lines
4.5 KiB
SQL
76 lines
4.5 KiB
SQL
-- Remove multi-node CAGG support
|
|
DROP FUNCTION IF EXISTS _timescaledb_internal.invalidation_cagg_log_add_entry(integer,bigint,bigint);
|
|
DROP FUNCTION IF EXISTS _timescaledb_internal.invalidation_hyper_log_add_entry(integer,bigint,bigint);
|
|
DROP FUNCTION IF EXISTS _timescaledb_internal.materialization_invalidation_log_delete(integer);
|
|
DROP FUNCTION IF EXISTS _timescaledb_internal.invalidation_process_cagg_log(integer,integer,regtype,bigint,bigint,integer[],bigint[],bigint[]);
|
|
DROP FUNCTION IF EXISTS _timescaledb_internal.invalidation_process_cagg_log(integer,integer,regtype,bigint,bigint,integer[],bigint[],bigint[],text[]);
|
|
DROP FUNCTION IF EXISTS _timescaledb_internal.invalidation_process_hypertable_log(integer,integer,regtype,integer[],bigint[],bigint[]);
|
|
DROP FUNCTION IF EXISTS _timescaledb_internal.invalidation_process_hypertable_log(integer,integer,regtype,integer[],bigint[],bigint[],text[]);
|
|
DROP FUNCTION IF EXISTS _timescaledb_internal.hypertable_invalidation_log_delete(integer);
|
|
|
|
DROP FUNCTION IF EXISTS _timescaledb_functions.invalidation_cagg_log_add_entry(integer,bigint,bigint);
|
|
DROP FUNCTION IF EXISTS _timescaledb_functions.invalidation_hyper_log_add_entry(integer,bigint,bigint);
|
|
DROP FUNCTION IF EXISTS _timescaledb_functions.materialization_invalidation_log_delete(integer);
|
|
DROP FUNCTION IF EXISTS _timescaledb_functions.invalidation_process_cagg_log(integer,integer,regtype,bigint,bigint,integer[],bigint[],bigint[]);
|
|
DROP FUNCTION IF EXISTS _timescaledb_functions.invalidation_process_cagg_log(integer,integer,regtype,bigint,bigint,integer[],bigint[],bigint[],text[]);
|
|
DROP FUNCTION IF EXISTS _timescaledb_functions.invalidation_process_hypertable_log(integer,integer,regtype,integer[],bigint[],bigint[]);
|
|
DROP FUNCTION IF EXISTS _timescaledb_functions.invalidation_process_hypertable_log(integer,integer,regtype,integer[],bigint[],bigint[],text[]);
|
|
DROP FUNCTION IF EXISTS _timescaledb_functions.hypertable_invalidation_log_delete(integer);
|
|
|
|
CREATE VIEW timescaledb_information.hypertable_compression_settings AS
|
|
SELECT
|
|
format('%I.%I',ht.schema_name,ht.table_name)::regclass AS hypertable,
|
|
array_to_string(segmentby,',') AS segmentby,
|
|
un.orderby,
|
|
d.compress_interval_length
|
|
FROM _timescaledb_catalog.hypertable ht
|
|
JOIN LATERAL (
|
|
SELECT
|
|
CASE WHEN d.column_type = ANY(ARRAY['timestamp','timestamptz','date']::regtype[]) THEN
|
|
_timescaledb_functions.to_interval(d.compress_interval_length)::text
|
|
ELSE
|
|
d.compress_interval_length::text
|
|
END AS compress_interval_length
|
|
FROM _timescaledb_catalog.dimension d WHERE d.hypertable_id = ht.id ORDER BY id LIMIT 1
|
|
) d ON true
|
|
LEFT JOIN _timescaledb_catalog.compression_settings s ON format('%I.%I',ht.schema_name,ht.table_name)::regclass = s.relid
|
|
LEFT JOIN LATERAL (
|
|
SELECT
|
|
string_agg(
|
|
format('%I%s%s',orderby,
|
|
CASE WHEN "desc" THEN ' DESC' ELSE '' END,
|
|
CASE WHEN nullsfirst AND NOT "desc" THEN ' NULLS FIRST' WHEN NOT nullsfirst AND "desc" THEN ' NULLS LAST' ELSE '' END
|
|
)
|
|
,',') AS orderby
|
|
FROM unnest(s.orderby, s.orderby_desc, s.orderby_nullsfirst) un(orderby, "desc", nullsfirst)
|
|
) un ON true;
|
|
|
|
CREATE VIEW timescaledb_information.chunk_compression_settings AS
|
|
SELECT
|
|
format('%I.%I',ht.schema_name,ht.table_name)::regclass AS hypertable,
|
|
format('%I.%I',ch.schema_name,ch.table_name)::regclass AS chunk,
|
|
array_to_string(segmentby,',') AS segmentby,
|
|
un.orderby
|
|
FROM _timescaledb_catalog.hypertable ht
|
|
INNER JOIN _timescaledb_catalog.chunk ch ON ch.hypertable_id = ht.id
|
|
INNER JOIN _timescaledb_catalog.chunk ch2 ON ch2.id = ch.compressed_chunk_id
|
|
LEFT JOIN _timescaledb_catalog.compression_settings s ON format('%I.%I',ch2.schema_name,ch2.table_name)::regclass = s.relid
|
|
LEFT JOIN LATERAL (
|
|
SELECT
|
|
string_agg(
|
|
format('%I%s%s',orderby,
|
|
CASE WHEN "desc" THEN ' DESC' ELSE '' END,
|
|
CASE WHEN nullsfirst AND NOT "desc" THEN ' NULLS FIRST' WHEN NOT nullsfirst AND "desc" THEN ' NULLS LAST' ELSE '' END
|
|
),',') AS orderby
|
|
FROM unnest(s.orderby, s.orderby_desc, s.orderby_nullsfirst) un(orderby, "desc", nullsfirst)
|
|
) un ON true;
|
|
|
|
INSERT INTO _timescaledb_catalog.compression_settings
|
|
SELECT
|
|
format('%I.%I',ch.schema_name,ch.table_name)::regclass,s.segmentby,s.orderby,s.orderby_desc,s.orderby_nullsfirst
|
|
FROM _timescaledb_catalog.hypertable ht1
|
|
INNER JOIN _timescaledb_catalog.hypertable ht2 ON ht2.id = ht1.compressed_hypertable_id
|
|
INNER JOIN _timescaledb_catalog.compression_settings s ON s.relid = format('%I.%I',ht1.schema_name,ht1.table_name)::regclass
|
|
INNER JOIN _timescaledb_catalog.chunk ch ON ch.hypertable_id = ht2.id ON CONFLICT DO NOTHING;
|
|
|