-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This release contains performance improvements and bug fixes since the 2.17.2 release. We recommend that you upgrade at the next available opportunity. **Features** * timescale#6901: Add hypertable support for transition tables. * timescale#7104: Hypercore table access method. * timescale#7271: Push down `order by` in real-time continuous aggregate queries. * timescale#7295: Support `alter table set access method` on hypertable. * timescale#7341: Vectorized aggregation with grouping by one fixed-size by-value compressed column * timescale#7390: Disable custom `hashagg` planner code. * timescale#7411: Change parameter name to enable hypercore table access method. * timescale#7412: Add GUC for `hypercore_use_access_method` default. * timescale#7413: Add GUC for segmentwise recompression. * timescale#7433 Add support for merging chunks * timescale#7436 Add index creation on orderby columns * timescale#7443: Add hypercore function and view aliases. * timescale#7455: Support `drop not null` on compressed hypertables. * timescale#7458: Support vecorized aggregation with aggregate `filter` clauses that are also vectorizable. * timescale#7482: Optimize recompression of partially compressed chunks. * timescale#7486: Prevent building against postgres versions with broken ABI. * timescale#7521 Add optional `force` argument to `refresh_continuous_aggregate` * timescale#7528 Transform sorting on `time_bucket` to sorting on time for compressed chunks in some cases. * timescale#7565 Add hint when hypertable creation fails * timescale#7587 Add `include_tiered_data` parameter to `add_continuous_aggregate_policy` API **Bugfixes** * timescale#7378: Remove obsolete job referencing `policy_job_error_retention`. * timescale#7409: Update `bgw_job` table when altering procedure. * timescale#7410: Fix the `aggregated compressed column not found` error on aggregation query. * timescale#7426: Fix `datetime` parsing error in chunk constraint creation. * timescale#7432: Verify that the heap tuple is valid before using. * timescale#7434: Fixes the segfault when internally setting the replica identity for a given chunk. * timescale#7488: Emit error for transition table trigger on chunks. * timescale#7514: Fix the error: `invalid child of chunk append`. * timescale#7517 Fixes performance regression on `cagg_migrate` procedure * timescale#7527 Restart scheduler on error * timescale#7557: Fix null handling for in-memory tuple filtering. * timescale#7566 Improve transaction check in CAgg refresh * timescale#7584 Fix NaN-handling for vectorized aggregation **Thanks** * @bharrisau for reporting the segfault when creating chunks. * @k-rus for suggesting the improvement * @pgloader for reporting the issue in an internal background job. * @staticlibs for sending PR to improve transaction check in CAgg refresh * @uasiddiqi for reporting the `aggregated compressed column not found` error.
- Loading branch information
There are no files selected for viewing
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,155 @@ | ||
-- remove obsolete job | ||
DELETE FROM _timescaledb_config.bgw_job WHERE id = 2; | ||
|
||
-- Hypercore updates | ||
CREATE FUNCTION _timescaledb_debug.is_compressed_tid(tid) RETURNS BOOL | ||
AS '@MODULE_PATHNAME@', 'ts_update_placeholder' LANGUAGE C STRICT; | ||
|
||
DROP FUNCTION IF EXISTS @extschema@.compress_chunk(uncompressed_chunk REGCLASS, if_not_compressed BOOLEAN, recompress BOOLEAN); | ||
|
||
CREATE FUNCTION @extschema@.compress_chunk( | ||
uncompressed_chunk REGCLASS, | ||
if_not_compressed BOOLEAN = true, | ||
recompress BOOLEAN = false, | ||
hypercore_use_access_method BOOL = NULL | ||
) RETURNS REGCLASS AS '@MODULE_PATHNAME@', 'ts_update_placeholder' LANGUAGE C VOLATILE; | ||
|
||
DROP FUNCTION IF EXISTS @extschema@.add_compression_policy(hypertable REGCLASS, compress_after "any", if_not_exists BOOL, schedule_interval INTERVAL, initial_start TIMESTAMPTZ, timezone TEXT, compress_created_before INTERVAL); | ||
|
||
CREATE FUNCTION @extschema@.add_compression_policy( | ||
hypertable REGCLASS, | ||
compress_after "any" = NULL, | ||
if_not_exists BOOL = false, | ||
schedule_interval INTERVAL = NULL, | ||
initial_start TIMESTAMPTZ = NULL, | ||
timezone TEXT = NULL, | ||
compress_created_before INTERVAL = NULL, | ||
hypercore_use_access_method BOOL = NULL | ||
) | ||
RETURNS INTEGER | ||
AS '@MODULE_PATHNAME@', 'ts_update_placeholder' | ||
LANGUAGE C VOLATILE; | ||
|
||
DROP FUNCTION IF EXISTS timescaledb_experimental.add_policies(relation REGCLASS, if_not_exists BOOL, refresh_start_offset "any", refresh_end_offset "any", compress_after "any", drop_after "any"); | ||
|
||
CREATE FUNCTION timescaledb_experimental.add_policies( | ||
relation REGCLASS, | ||
if_not_exists BOOL = false, | ||
refresh_start_offset "any" = NULL, | ||
refresh_end_offset "any" = NULL, | ||
compress_after "any" = NULL, | ||
drop_after "any" = NULL, | ||
hypercore_use_access_method BOOL = NULL) | ||
RETURNS BOOL | ||
AS '@MODULE_PATHNAME@', 'ts_update_placeholder' | ||
LANGUAGE C VOLATILE; | ||
|
||
DROP PROCEDURE IF EXISTS _timescaledb_functions.policy_compression_execute(job_id INTEGER, htid INTEGER, lag ANYELEMENT, maxchunks INTEGER, verbose_log BOOLEAN, recompress_enabled BOOLEAN, use_creation_time BOOLEAN); | ||
|
||
DROP PROCEDURE IF EXISTS _timescaledb_functions.policy_compression(job_id INTEGER, config JSONB); | ||
|
||
CREATE PROCEDURE @extschema@.convert_to_columnstore( | ||
chunk REGCLASS, | ||
if_not_columnstore BOOLEAN = true, | ||
recompress BOOLEAN = false, | ||
hypercore_use_access_method BOOL = NULL) | ||
AS '@MODULE_PATHNAME@', 'ts_update_placeholder' | ||
LANGUAGE C; | ||
|
||
CREATE PROCEDURE @extschema@.convert_to_rowstore( | ||
chunk REGCLASS, | ||
if_columnstore BOOLEAN = true) | ||
AS '@MODULE_PATHNAME@', 'ts_update_placeholder' | ||
LANGUAGE C; | ||
|
||
CREATE PROCEDURE @extschema@.add_columnstore_policy( | ||
hypertable REGCLASS, | ||
after "any" = NULL, | ||
if_not_exists BOOL = false, | ||
schedule_interval INTERVAL = NULL, | ||
initial_start TIMESTAMPTZ = NULL, | ||
timezone TEXT = NULL, | ||
created_before INTERVAL = NULL, | ||
hypercore_use_access_method BOOL = NULL | ||
) LANGUAGE C AS '@MODULE_PATHNAME@', 'ts_update_placeholder'; | ||
|
||
CREATE PROCEDURE @extschema@.remove_columnstore_policy( | ||
hypertable REGCLASS, | ||
if_exists BOOL = false | ||
) LANGUAGE C AS '@MODULE_PATHNAME@', 'ts_update_placeholder'; | ||
|
||
CREATE FUNCTION @extschema@.chunk_columnstore_stats (hypertable REGCLASS) | ||
RETURNS TABLE ( | ||
chunk_schema name, | ||
chunk_name name, | ||
compression_status text, | ||
before_compression_table_bytes bigint, | ||
before_compression_index_bytes bigint, | ||
before_compression_toast_bytes bigint, | ||
before_compression_total_bytes bigint, | ||
after_compression_table_bytes bigint, | ||
after_compression_index_bytes bigint, | ||
after_compression_toast_bytes bigint, | ||
after_compression_total_bytes bigint, | ||
node_name name) | ||
LANGUAGE SQL | ||
STABLE STRICT | ||
AS 'SELECT * FROM @extschema@.chunk_compression_stats($1)' | ||
SET search_path TO pg_catalog, pg_temp; | ||
|
||
CREATE FUNCTION @extschema@.hypertable_columnstore_stats (hypertable REGCLASS) | ||
RETURNS TABLE ( | ||
total_chunks bigint, | ||
number_compressed_chunks bigint, | ||
before_compression_table_bytes bigint, | ||
before_compression_index_bytes bigint, | ||
before_compression_toast_bytes bigint, | ||
before_compression_total_bytes bigint, | ||
after_compression_table_bytes bigint, | ||
after_compression_index_bytes bigint, | ||
after_compression_toast_bytes bigint, | ||
after_compression_total_bytes bigint, | ||
node_name name) | ||
LANGUAGE SQL | ||
STABLE STRICT | ||
AS 'SELECT * FROM @extschema@.hypertable_compression_stats($1)' | ||
SET search_path TO pg_catalog, pg_temp; | ||
|
||
-- Recreate `refresh_continuous_aggregate` procedure to add `force` argument | ||
DROP PROCEDURE IF EXISTS @extschema@.refresh_continuous_aggregate (continuous_aggregate REGCLASS, window_start "any", window_end "any"); | ||
|
||
CREATE PROCEDURE @extschema@.refresh_continuous_aggregate( | ||
continuous_aggregate REGCLASS, | ||
window_start "any", | ||
window_end "any", | ||
force BOOLEAN = FALSE | ||
) LANGUAGE C AS '@MODULE_PATHNAME@', 'ts_update_placeholder'; | ||
|
||
-- Add `include_tiered_data` argument to `add_continuous_aggregate_policy` | ||
DROP FUNCTION @extschema@.add_continuous_aggregate_policy( | ||
continuous_aggregate REGCLASS, start_offset "any", | ||
end_offset "any", schedule_interval INTERVAL, | ||
if_not_exists BOOL, | ||
initial_start TIMESTAMPTZ, | ||
timezone TEXT | ||
); | ||
CREATE FUNCTION @extschema@.add_continuous_aggregate_policy( | ||
continuous_aggregate REGCLASS, start_offset "any", | ||
end_offset "any", schedule_interval INTERVAL, | ||
if_not_exists BOOL = false, | ||
initial_start TIMESTAMPTZ = NULL, | ||
timezone TEXT = NULL, | ||
include_tiered_data BOOL = NULL | ||
) | ||
RETURNS INTEGER | ||
AS '@MODULE_PATHNAME@', 'ts_update_placeholder' | ||
LANGUAGE C VOLATILE; | ||
|
||
-- Merge chunks | ||
CREATE PROCEDURE @extschema@.merge_chunks( | ||
chunk1 REGCLASS, chunk2 REGCLASS | ||
) LANGUAGE C AS '@MODULE_PATHNAME@', 'ts_update_placeholder'; | ||
|
||
CREATE PROCEDURE @extschema@.merge_chunks( | ||
chunks REGCLASS[] | ||
) LANGUAGE C AS '@MODULE_PATHNAME@', 'ts_update_placeholder'; |