mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-15 01:53:41 +08:00
This release contains bug fixes since the 2.14.0 release. We recommend that you upgrade at the next available opportunity. **Features** * #6630 Add views for per chunk compression settings **Bugfixes** * #6636 Fixes extension update of compressed hypertables with dropped columns * #6637 Reset sequence numbers on non-rollup compression * #6639 Disable default indexscan for compression * #6651 Fix DecompressChunk path generation with per chunk settings **Thanks** * @anajavi for reporting an issue with extension update of compressed hypertables
58 lines
2.6 KiB
SQL
58 lines
2.6 KiB
SQL
|
|
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;
|
|
|