From 996eb055ae02b095035b4ab72e9ae068807b6aa6 Mon Sep 17 00:00:00 2001 From: Pallavi Sontakke Date: Thu, 16 Jan 2025 17:49:29 +0530 Subject: [PATCH] Release 2.18.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This release introduces the ability to add secondary indexes to the columnstore, improves group by and filtering performance through columnstore vectorization, and contains the highly upvoted community request of transition table support. We recommend that you upgrade at the next available opportunity. **Highlighted features in TimescaleDB v2.18.0** * The ability to add secondary indexes to the columnstore through the new hypercore table access method. * Significant performance improvements through vectorization (`SIMD`) for aggregations using a group by with one column and/or using a filter clause when querying the columnstore. * Hypertables support triggers for transition tables, which is one of the most upvoted community feature requests. * Updated methods to manage Timescale's hybrid row-columnar store (hypercore) that highlight the usage of the columnstore which includes both an optimized columnar format as well as compression. **Dropping support for Bitnami images** After the recent change in Bitnami’s [LTS support policy](https://github.com/bitnami/containers/issues/75671), we are no longer building Bitnami images for TimescaleDB. We recommend using the [official TimescaleDB Docker image](https://hub.docker.com/r/timescale/timescaledb-ha) **Deprecation Notice** We are deprecating the following parameters, functions, procedures and views. They will be removed with the next major release of TimescaleDB. Please find the replacements in the table below: | Deprecated | Replacement | Type | | --- | --- | --- | | decompress_chunk | convert_to_rowstore | Procedure | | compress_chunk | convert_to_columnstore | Procedure | | add_compression_policy | add_columnstore_policy | Function | | remove_compression_policy | remove_columnstore_policy | Function | | hypertable_compression_stats | hypertable_columnstore_stats | Function | | chunk_compression_stats | chunk_columnstore_stats | Function | | hypertable_compression_settings | hypertable_columnstore_settings | View | | chunk_compression_settings | chunk_columnstore_settings | View | | compression_settings | columnstore_settings | View | | timescaledb.compress | timescaledb.enable_columnstore | Parameter | | timescaledb.compress_segmentby | timescaledb.segmentby | Parameter | | timescaledb.compress_orderby | timescaledb.orderby | Parameter | **Features** * #7341: Vectorized aggregation with grouping by one fixed-size by-value compressed column (such as arithmetic types). * #7104: Hypercore table access method. * #6901: Add hypertable support for transition tables. * #7482: Optimize recompression of partially compressed chunks. * #7458: Support vectorized aggregation with aggregate `filter` clauses that are also vectorizable. * #7433: Add support for merging chunks. * #7271: Push down `order by` in real-time continuous aggregate queries. * #7455: Support `drop not null` on compressed hypertables. * #7295: Support `alter table set access method` on hypertable. * #7411: Change parameter name to enable hypercore table access method. * #7436: Add index creation on `order by` columns. * #7443: Add hypercore function and view aliases. * #7521: Add optional `force` argument to `refresh_continuous_aggregate`. * #7528: Transform sorting on `time_bucket` to sorting on time for compressed chunks in some cases. * #7565: Add hint when hypertable creation fails. * #7390: Disable custom `hashagg` planner code. * #7587: Add `include_tiered_data` parameter to `add_continuous_aggregate_policy` API. * #7486: Prevent building against PostgreSQL versions with broken ABI. * #7412: Add [GUC](https://www.postgresql.org/docs/current/acronyms.html#:~:text=GUC) for the `hypercore_use_access_method` default. * #7413: Add GUC for segmentwise recompression. **Bugfixes** * #7378: Remove obsolete job referencing `policy_job_error_retention`. * #7409: Update `bgw_job` table when altering procedure. * #7410: Fix the `aggregated compressed column not found` error on aggregation query. * #7426: Fix `datetime` parsing error in chunk constraint creation. * #7432: Verify that the heap tuple is valid before using. * #7434: Fix the segfault when internally setting the replica identity for a given chunk. * #7488: Emit error for transition table trigger on chunks. * #7514: Fix the error: `invalid child of chunk append`. * #7517: Fix the performance regression on the `cagg_migrate` procedure. * #7527: Restart scheduler on error. * #7557: Fix null handling for in-memory tuple filtering. * #7566: Improve transaction check in CAGG refresh. * #7584: Fix NaN-handling for vectorized aggregation. * #7598: Match the Postgres NaN comparison behavior in WHERE clause over compressed tables. **Thanks** * @bharrisau for reporting the segfault when creating chunks. * @jakehedlund for reporting the incompatible NaN behavior in WHERE clause over compressed tables. * @k-rus for suggesting that we add a hint when hypertable creation fails. * @staticlibs for sending the pull request that improves the transaction check in CAGG refresh. * @uasiddiqi for reporting the `aggregated compressed column not found` error. --- .unreleased/compressed-sort-transform | 1 - .unreleased/nan-vectorized-filters | 2 - .unreleased/pr_6901 | 1 - .unreleased/pr_7104 | 1 - .unreleased/pr_7271 | 1 - .unreleased/pr_7295 | 1 - .unreleased/pr_7378 | 2 - .unreleased/pr_7390 | 1 - .unreleased/pr_7409 | 1 - .unreleased/pr_7411 | 1 - .unreleased/pr_7412 | 1 - .unreleased/pr_7413 | 1 - .unreleased/pr_7426 | 1 - .unreleased/pr_7432 | 1 - .unreleased/pr_7433 | 1 - .unreleased/pr_7434 | 2 - .unreleased/pr_7436 | 1 - .unreleased/pr_7443 | 1 - .unreleased/pr_7455 | 1 - .unreleased/pr_7482 | 1 - .unreleased/pr_7486 | 1 - .unreleased/pr_7488 | 1 - .unreleased/pr_7514 | 1 - .unreleased/pr_7517 | 1 - .unreleased/pr_7521 | 1 - .unreleased/pr_7527 | 1 - .unreleased/pr_7557 | 1 - .unreleased/pr_7565 | 2 - .unreleased/pr_7566 | 2 - .unreleased/pr_7584 | 1 - .unreleased/pr_7587 | 1 - .unreleased/resolve-vars | 2 - .unreleased/vectorized-agg-filter | 1 - .unreleased/vectorized-grouping-one-fixed | 1 - CHANGELOG.md | 81 ++++++++++ sql/CMakeLists.txt | 6 +- sql/updates/2.17.2--2.18.0.sql | 172 ++++++++++++++++++++++ sql/updates/2.18.0--2.17.2.sql | 93 ++++++++++++ sql/updates/latest-dev.sql | 171 --------------------- sql/updates/reverse-dev.sql | 93 ------------ version.config | 4 +- 41 files changed, 352 insertions(+), 308 deletions(-) delete mode 100644 .unreleased/compressed-sort-transform delete mode 100644 .unreleased/nan-vectorized-filters delete mode 100644 .unreleased/pr_6901 delete mode 100644 .unreleased/pr_7104 delete mode 100644 .unreleased/pr_7271 delete mode 100644 .unreleased/pr_7295 delete mode 100644 .unreleased/pr_7378 delete mode 100644 .unreleased/pr_7390 delete mode 100644 .unreleased/pr_7409 delete mode 100644 .unreleased/pr_7411 delete mode 100644 .unreleased/pr_7412 delete mode 100644 .unreleased/pr_7413 delete mode 100644 .unreleased/pr_7426 delete mode 100644 .unreleased/pr_7432 delete mode 100644 .unreleased/pr_7433 delete mode 100644 .unreleased/pr_7434 delete mode 100644 .unreleased/pr_7436 delete mode 100644 .unreleased/pr_7443 delete mode 100644 .unreleased/pr_7455 delete mode 100644 .unreleased/pr_7482 delete mode 100644 .unreleased/pr_7486 delete mode 100644 .unreleased/pr_7488 delete mode 100644 .unreleased/pr_7514 delete mode 100644 .unreleased/pr_7517 delete mode 100644 .unreleased/pr_7521 delete mode 100644 .unreleased/pr_7527 delete mode 100644 .unreleased/pr_7557 delete mode 100644 .unreleased/pr_7565 delete mode 100644 .unreleased/pr_7566 delete mode 100644 .unreleased/pr_7584 delete mode 100644 .unreleased/pr_7587 delete mode 100644 .unreleased/resolve-vars delete mode 100644 .unreleased/vectorized-agg-filter delete mode 100644 .unreleased/vectorized-grouping-one-fixed create mode 100644 sql/updates/2.17.2--2.18.0.sql create mode 100644 sql/updates/2.18.0--2.17.2.sql diff --git a/.unreleased/compressed-sort-transform b/.unreleased/compressed-sort-transform deleted file mode 100644 index 5e5e91ed0ff..00000000000 --- a/.unreleased/compressed-sort-transform +++ /dev/null @@ -1 +0,0 @@ -Implements: #7528 Transform sorting on `time_bucket` to sorting on time for compressed chunks in some cases. diff --git a/.unreleased/nan-vectorized-filters b/.unreleased/nan-vectorized-filters deleted file mode 100644 index 9059ee99758..00000000000 --- a/.unreleased/nan-vectorized-filters +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: #6884 Match the Postgres NaN comparison behavior in WHERE clause over compressed tables. -Thanks: @jakehedlund for reporting the incompatible NaN behavior in WHERE clause over compressed tables. diff --git a/.unreleased/pr_6901 b/.unreleased/pr_6901 deleted file mode 100644 index 70af3960865..00000000000 --- a/.unreleased/pr_6901 +++ /dev/null @@ -1 +0,0 @@ -Implements: #6901: Add hypertable support for transition tables. diff --git a/.unreleased/pr_7104 b/.unreleased/pr_7104 deleted file mode 100644 index 143808aa3cf..00000000000 --- a/.unreleased/pr_7104 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7104: Hypercore table access method. diff --git a/.unreleased/pr_7271 b/.unreleased/pr_7271 deleted file mode 100644 index 3f002c8995f..00000000000 --- a/.unreleased/pr_7271 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7271: Push down `order by` in real-time continuous aggregate queries. diff --git a/.unreleased/pr_7295 b/.unreleased/pr_7295 deleted file mode 100644 index 4ccbebe088e..00000000000 --- a/.unreleased/pr_7295 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7295: Support `alter table set access method` on hypertable. diff --git a/.unreleased/pr_7378 b/.unreleased/pr_7378 deleted file mode 100644 index b917991e10d..00000000000 --- a/.unreleased/pr_7378 +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: #7378: Remove obsolete job referencing `policy_job_error_retention`. -Thanks: @pgloader for reporting the issue in an internal background job. diff --git a/.unreleased/pr_7390 b/.unreleased/pr_7390 deleted file mode 100644 index 74c1e4d0947..00000000000 --- a/.unreleased/pr_7390 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7390: Disable custom `hashagg` planner code. diff --git a/.unreleased/pr_7409 b/.unreleased/pr_7409 deleted file mode 100644 index ac9cfb22d4f..00000000000 --- a/.unreleased/pr_7409 +++ /dev/null @@ -1 +0,0 @@ -Fixes: #7409: Update `bgw_job` table when altering procedure. diff --git a/.unreleased/pr_7411 b/.unreleased/pr_7411 deleted file mode 100644 index 537885a7dd2..00000000000 --- a/.unreleased/pr_7411 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7411: Change parameter name to enable hypercore table access method. diff --git a/.unreleased/pr_7412 b/.unreleased/pr_7412 deleted file mode 100644 index 86f2368b534..00000000000 --- a/.unreleased/pr_7412 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7412: Add GUC for `hypercore_use_access_method` default. diff --git a/.unreleased/pr_7413 b/.unreleased/pr_7413 deleted file mode 100644 index 53f2a223bae..00000000000 --- a/.unreleased/pr_7413 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7413: Add GUC for segmentwise recompression. diff --git a/.unreleased/pr_7426 b/.unreleased/pr_7426 deleted file mode 100644 index d2eb7768462..00000000000 --- a/.unreleased/pr_7426 +++ /dev/null @@ -1 +0,0 @@ -Fixes: #7426: Fix `datetime` parsing error in chunk constraint creation. diff --git a/.unreleased/pr_7432 b/.unreleased/pr_7432 deleted file mode 100644 index 30ff2ac3c5e..00000000000 --- a/.unreleased/pr_7432 +++ /dev/null @@ -1 +0,0 @@ -Fixes: #7432: Verify that the heap tuple is valid before using. diff --git a/.unreleased/pr_7433 b/.unreleased/pr_7433 deleted file mode 100644 index c733d50d429..00000000000 --- a/.unreleased/pr_7433 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7433 Add support for merging chunks diff --git a/.unreleased/pr_7434 b/.unreleased/pr_7434 deleted file mode 100644 index dfc43438871..00000000000 --- a/.unreleased/pr_7434 +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: #7434: Fixes the segfault when internally setting the replica identity for a given chunk. -Thanks: @bharrisau for reporting the segfault when creating chunks. diff --git a/.unreleased/pr_7436 b/.unreleased/pr_7436 deleted file mode 100644 index 8f7b34d56bb..00000000000 --- a/.unreleased/pr_7436 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7436 Add index creation on orderby columns diff --git a/.unreleased/pr_7443 b/.unreleased/pr_7443 deleted file mode 100644 index 17ae70064cb..00000000000 --- a/.unreleased/pr_7443 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7443: Add hypercore function and view aliases. diff --git a/.unreleased/pr_7455 b/.unreleased/pr_7455 deleted file mode 100644 index 27624c0c2dd..00000000000 --- a/.unreleased/pr_7455 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7455: Support `drop not null` on compressed hypertables. diff --git a/.unreleased/pr_7482 b/.unreleased/pr_7482 deleted file mode 100644 index ea8c07aa726..00000000000 --- a/.unreleased/pr_7482 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7482: Optimize recompression of partially compressed chunks. diff --git a/.unreleased/pr_7486 b/.unreleased/pr_7486 deleted file mode 100644 index a4d1a58498e..00000000000 --- a/.unreleased/pr_7486 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7486: Prevent building against postgres versions with broken ABI. diff --git a/.unreleased/pr_7488 b/.unreleased/pr_7488 deleted file mode 100644 index a1507ecc518..00000000000 --- a/.unreleased/pr_7488 +++ /dev/null @@ -1 +0,0 @@ -Fixes: #7488: Emit error for transition table trigger on chunks. diff --git a/.unreleased/pr_7514 b/.unreleased/pr_7514 deleted file mode 100644 index fe62a0f9d14..00000000000 --- a/.unreleased/pr_7514 +++ /dev/null @@ -1 +0,0 @@ -Fixes: #7514: Fix the error: `invalid child of chunk append`. diff --git a/.unreleased/pr_7517 b/.unreleased/pr_7517 deleted file mode 100644 index d664cdfd347..00000000000 --- a/.unreleased/pr_7517 +++ /dev/null @@ -1 +0,0 @@ -Fixes: #7517 Fixes performance regression on `cagg_migrate` procedure diff --git a/.unreleased/pr_7521 b/.unreleased/pr_7521 deleted file mode 100644 index a230550a94c..00000000000 --- a/.unreleased/pr_7521 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7521 Add optional `force` argument to `refresh_continuous_aggregate` diff --git a/.unreleased/pr_7527 b/.unreleased/pr_7527 deleted file mode 100644 index 534b8bec629..00000000000 --- a/.unreleased/pr_7527 +++ /dev/null @@ -1 +0,0 @@ -Fixes: #7527 Restart scheduler on error diff --git a/.unreleased/pr_7557 b/.unreleased/pr_7557 deleted file mode 100644 index 2fcd79a6dbe..00000000000 --- a/.unreleased/pr_7557 +++ /dev/null @@ -1 +0,0 @@ -Fixes: #7557: Fix null handling for in-memory tuple filtering. diff --git a/.unreleased/pr_7565 b/.unreleased/pr_7565 deleted file mode 100644 index 1dde2c8222b..00000000000 --- a/.unreleased/pr_7565 +++ /dev/null @@ -1,2 +0,0 @@ -Implements: #7565 Add hint when hypertable creation fails -Thanks: @k-rus for suggesting the improvement diff --git a/.unreleased/pr_7566 b/.unreleased/pr_7566 deleted file mode 100644 index ca3c51d8392..00000000000 --- a/.unreleased/pr_7566 +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: #7566 Improve transaction check in CAgg refresh -Thanks: @staticlibs for sending PR to improve transaction check in CAgg refresh diff --git a/.unreleased/pr_7584 b/.unreleased/pr_7584 deleted file mode 100644 index dec2e4e1912..00000000000 --- a/.unreleased/pr_7584 +++ /dev/null @@ -1 +0,0 @@ -Fixes: #7584 Fix NaN-handling for vectorized aggregation diff --git a/.unreleased/pr_7587 b/.unreleased/pr_7587 deleted file mode 100644 index bd14aaf1c90..00000000000 --- a/.unreleased/pr_7587 +++ /dev/null @@ -1 +0,0 @@ -Implements: #7587 Add `include_tiered_data` parameter to `add_continuous_aggregate_policy` API diff --git a/.unreleased/resolve-vars b/.unreleased/resolve-vars deleted file mode 100644 index aa006e923a4..00000000000 --- a/.unreleased/resolve-vars +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: #7410: Fix the `aggregated compressed column not found` error on aggregation query. -Thanks: @uasiddiqi for reporting the `aggregated compressed column not found` error. diff --git a/.unreleased/vectorized-agg-filter b/.unreleased/vectorized-agg-filter deleted file mode 100644 index b68087e0355..00000000000 --- a/.unreleased/vectorized-agg-filter +++ /dev/null @@ -1 +0,0 @@ -Implements: #7458: Support vecorized aggregation with aggregate `filter` clauses that are also vectorizable. diff --git a/.unreleased/vectorized-grouping-one-fixed b/.unreleased/vectorized-grouping-one-fixed deleted file mode 100644 index c2ad06aa2b9..00000000000 --- a/.unreleased/vectorized-grouping-one-fixed +++ /dev/null @@ -1 +0,0 @@ -Implements: #7341: Vectorized aggregation with grouping by one fixed-size by-value compressed column (such as arithmetic types). diff --git a/CHANGELOG.md b/CHANGELOG.md index d745eb8a037..9555057b9e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,87 @@ `psql` with the `-X` flag to prevent any `.psqlrc` commands from accidentally triggering the load of a previous DB version.** + +## 2.18.0 (2025-01-23) + +This release introduces the ability to add secondary indexes to the columnstore, improves group by and filtering performance through columnstore vectorization, and contains the highly upvoted community request of transition table support. We recommend that you upgrade at the next available opportunity. + +**Highlighted features in TimescaleDB v2.18.0** + +* The ability to add secondary indexes to the columnstore through the new hypercore table access method. +* Significant performance improvements through vectorization (`SIMD`) for aggregations using a group by with one column and/or using a filter clause when querying the columnstore. +* Hypertables support triggers for transition tables, which is one of the most upvoted community feature requests. +* Updated methods to manage Timescale's hybrid row-columnar store (hypercore) that highlight the usage of the columnstore which includes both an optimized columnar format as well as compression. + +**Dropping support for Bitnami images** + +After the recent change in Bitnami’s [LTS support policy](https://github.com/bitnami/containers/issues/75671), we are no longer building Bitnami images for TimescaleDB. We recommend using the [official TimescaleDB Docker image](https://hub.docker.com/r/timescale/timescaledb-ha) + +**Deprecation Notice** + +We are deprecating the following parameters, functions, procedures and views. They will be removed with the next major release of TimescaleDB. Please find the replacements in the table below: + +| Deprecated | Replacement | Type | +| --- | --- | --- | +| decompress_chunk | convert_to_rowstore | Procedure | +| compress_chunk | convert_to_columnstore | Procedure | +| add_compression_policy | add_columnstore_policy | Function | +| remove_compression_policy | remove_columnstore_policy | Function | +| hypertable_compression_stats | hypertable_columnstore_stats | Function | +| chunk_compression_stats | chunk_columnstore_stats | Function | +| hypertable_compression_settings | hypertable_columnstore_settings | View | +| chunk_compression_settings | chunk_columnstore_settings | View | +| compression_settings | columnstore_settings | View | +| timescaledb.compress | timescaledb.enable_columnstore | Parameter | +| timescaledb.compress_segmentby | timescaledb.segmentby | Parameter | +| timescaledb.compress_orderby | timescaledb.orderby | Parameter | + +**Features** +* #7341: Vectorized aggregation with grouping by one fixed-size by-value compressed column (such as arithmetic types). +* #7104: Hypercore table access method. +* #6901: Add hypertable support for transition tables. +* #7482: Optimize recompression of partially compressed chunks. +* #7458: Support vectorized aggregation with aggregate `filter` clauses that are also vectorizable. +* #7433: Add support for merging chunks. +* #7271: Push down `order by` in real-time continuous aggregate queries. +* #7455: Support `drop not null` on compressed hypertables. +* #7295: Support `alter table set access method` on hypertable. +* #7411: Change parameter name to enable hypercore table access method. +* #7436: Add index creation on `order by` columns. +* #7443: Add hypercore function and view aliases. +* #7521: Add optional `force` argument to `refresh_continuous_aggregate`. +* #7528: Transform sorting on `time_bucket` to sorting on time for compressed chunks in some cases. +* #7565: Add hint when hypertable creation fails. +* #7390: Disable custom `hashagg` planner code. +* #7587: Add `include_tiered_data` parameter to `add_continuous_aggregate_policy` API. +* #7486: Prevent building against PostgreSQL versions with broken ABI. +* #7412: Add [GUC](https://www.postgresql.org/docs/current/acronyms.html#:~:text=GUC) for the `hypercore_use_access_method` default. +* #7413: Add GUC for segmentwise recompression. + +**Bugfixes** +* #7378: Remove obsolete job referencing `policy_job_error_retention`. +* #7409: Update `bgw_job` table when altering procedure. +* #7410: Fix the `aggregated compressed column not found` error on aggregation query. +* #7426: Fix `datetime` parsing error in chunk constraint creation. +* #7432: Verify that the heap tuple is valid before using. +* #7434: Fix the segfault when internally setting the replica identity for a given chunk. +* #7488: Emit error for transition table trigger on chunks. +* #7514: Fix the error: `invalid child of chunk append`. +* #7517: Fix the performance regression on the `cagg_migrate` procedure. +* #7527: Restart scheduler on error. +* #7557: Fix null handling for in-memory tuple filtering. +* #7566: Improve transaction check in CAGG refresh. +* #7584: Fix NaN-handling for vectorized aggregation. +* #7598: Match the Postgres NaN comparison behavior in WHERE clause over compressed tables. + +**Thanks** +* @bharrisau for reporting the segfault when creating chunks. +* @jakehedlund for reporting the incompatible NaN behavior in WHERE clause over compressed tables. +* @k-rus for suggesting that we add a hint when hypertable creation fails. +* @staticlibs for sending the pull request that improves the transaction check in CAGG refresh. +* @uasiddiqi for reporting the `aggregated compressed column not found` error. + + ## 2.17.2 (2024-11-06) This release contains bug fixes since the 2.17.1 release. We recommend that you diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index b3d7f3d39b5..d01adbb17aa 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -45,7 +45,8 @@ set(MOD_FILES updates/2.16.0--2.16.1.sql updates/2.16.1--2.17.0.sql updates/2.17.0--2.17.1.sql - updates/2.17.1--2.17.2.sql) + updates/2.17.1--2.17.2.sql + updates/2.17.2--2.18.0.sql) # The downgrade file to generate a downgrade script for the current version, as # specified in version.config @@ -90,7 +91,8 @@ set(OLD_REV_FILES 2.16.1--2.16.0.sql 2.17.0--2.16.1.sql 2.17.1--2.17.0.sql - 2.17.2--2.17.1.sql) + 2.17.2--2.17.1.sql + 2.18.0--2.17.2.sql) set(MODULE_PATHNAME "$libdir/timescaledb-${PROJECT_VERSION_MOD}") set(LOADER_PATHNAME "$libdir/timescaledb") diff --git a/sql/updates/2.17.2--2.18.0.sql b/sql/updates/2.17.2--2.18.0.sql new file mode 100644 index 00000000000..49788b504e8 --- /dev/null +++ b/sql/updates/2.17.2--2.18.0.sql @@ -0,0 +1,172 @@ +-- 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'; + +CREATE FUNCTION @extschema@.ts_hypercore_handler(internal) RETURNS table_am_handler +AS '@MODULE_PATHNAME@', 'ts_hypercore_handler' LANGUAGE C; + +CREATE FUNCTION @extschema@.ts_hypercore_proxy_handler(internal) RETURNS index_am_handler +AS '@MODULE_PATHNAME@', 'ts_hypercore_proxy_handler' LANGUAGE C; + +CREATE ACCESS METHOD hypercore TYPE TABLE HANDLER @extschema@.ts_hypercore_handler; +COMMENT ON ACCESS METHOD hypercore IS 'Storage engine using hybrid row/columnar compression'; + +CREATE ACCESS METHOD hypercore_proxy TYPE INDEX HANDLER @extschema@.ts_hypercore_proxy_handler; +COMMENT ON ACCESS METHOD hypercore_proxy IS 'Hypercore proxy index access method'; + +CREATE OPERATOR CLASS int4_ops +DEFAULT FOR TYPE int4 USING hypercore_proxy AS + OPERATOR 1 = (int4, int4), + FUNCTION 1 hashint4(int4); diff --git a/sql/updates/2.18.0--2.17.2.sql b/sql/updates/2.18.0--2.17.2.sql new file mode 100644 index 00000000000..bc918202f24 --- /dev/null +++ b/sql/updates/2.18.0--2.17.2.sql @@ -0,0 +1,93 @@ +-- Hypercore AM +DROP ACCESS METHOD IF EXISTS hypercore_proxy; +DROP FUNCTION IF EXISTS @extschema@.ts_hypercore_proxy_handler; +DROP ACCESS METHOD IF EXISTS hypercore; +DROP FUNCTION IF EXISTS @extschema@.ts_hypercore_handler; +DROP FUNCTION IF EXISTS _timescaledb_debug.is_compressed_tid; + +DROP FUNCTION IF EXISTS @extschema@.compress_chunk(uncompressed_chunk REGCLASS, if_not_compressed BOOLEAN, recompress BOOLEAN, hypercore_use_access_method BOOL); + +CREATE FUNCTION @extschema@.compress_chunk( + uncompressed_chunk REGCLASS, + if_not_compressed BOOLEAN = true, + recompress BOOLEAN = false +) RETURNS REGCLASS AS '@MODULE_PATHNAME@', 'ts_compress_chunk' LANGUAGE C STRICT 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, hypercore_use_access_method BOOL); + +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 +) +RETURNS INTEGER +AS '@MODULE_PATHNAME@', 'ts_policy_compression_add' +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", hypercore_use_access_method BOOL); + +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) +RETURNS BOOL +AS '@MODULE_PATHNAME@', 'ts_policies_add' +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, useam BOOLEAN); + +DROP PROCEDURE IF EXISTS _timescaledb_functions.policy_compression(job_id INTEGER, config JSONB); +DROP PROCEDURE IF EXISTS @extschema@.convert_to_columnstore(REGCLASS, BOOLEAN, BOOLEAN, BOOLEAN); +DROP PROCEDURE IF EXISTS @extschema@.convert_to_rowstore(REGCLASS, BOOLEAN); +DROP PROCEDURE IF EXISTS @extschema@.add_columnstore_policy(REGCLASS, "any", BOOL, INTERVAL, TIMESTAMPTZ, TEXT, INTERVAL, BOOL); +DROP PROCEDURE IF EXISTS @extschema@.remove_columnstore_policy(REGCLASS, BOOL); +DROP FUNCTION IF EXISTS @extschema@.hypertable_columnstore_stats(REGCLASS); +DROP FUNCTION IF EXISTS @extschema@.chunk_columnstore_stats(REGCLASS); + +ALTER EXTENSION timescaledb DROP VIEW timescaledb_information.hypertable_columnstore_settings; +ALTER EXTENSION timescaledb DROP VIEW timescaledb_information.chunk_columnstore_settings; + +DROP VIEW timescaledb_information.hypertable_columnstore_settings; +DROP VIEW timescaledb_information.chunk_columnstore_settings; + +DROP PROCEDURE IF EXISTS _timescaledb_functions.cagg_migrate_update_watermark(INTEGER); + +-- Recreate `refresh_continuous_aggregate` procedure to remove the `force` argument +DROP PROCEDURE IF EXISTS @extschema@.refresh_continuous_aggregate (continuous_aggregate REGCLASS, window_start "any", window_end "any", force BOOLEAN); + +CREATE PROCEDURE @extschema@.refresh_continuous_aggregate( + continuous_aggregate REGCLASS, + window_start "any", + window_end "any" +) LANGUAGE C AS '@MODULE_PATHNAME@', 'ts_continuous_agg_refresh'; + +-- Remove `include_tiered_data` argument from `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, + include_tiered_data BOOL +); +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 +) +RETURNS INTEGER +AS '@MODULE_PATHNAME@', 'ts_policy_refresh_cagg_add' +LANGUAGE C VOLATILE; + +-- Merge chunks +DROP PROCEDURE IF EXISTS @extschema@.merge_chunks(chunk1 REGCLASS, chunk2 REGCLASS); +DROP PROCEDURE IF EXISTS @extschema@.merge_chunks(chunks REGCLASS[]); diff --git a/sql/updates/latest-dev.sql b/sql/updates/latest-dev.sql index 49788b504e8..8b137891791 100644 --- a/sql/updates/latest-dev.sql +++ b/sql/updates/latest-dev.sql @@ -1,172 +1 @@ --- 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'; - -CREATE FUNCTION @extschema@.ts_hypercore_handler(internal) RETURNS table_am_handler -AS '@MODULE_PATHNAME@', 'ts_hypercore_handler' LANGUAGE C; - -CREATE FUNCTION @extschema@.ts_hypercore_proxy_handler(internal) RETURNS index_am_handler -AS '@MODULE_PATHNAME@', 'ts_hypercore_proxy_handler' LANGUAGE C; - -CREATE ACCESS METHOD hypercore TYPE TABLE HANDLER @extschema@.ts_hypercore_handler; -COMMENT ON ACCESS METHOD hypercore IS 'Storage engine using hybrid row/columnar compression'; - -CREATE ACCESS METHOD hypercore_proxy TYPE INDEX HANDLER @extschema@.ts_hypercore_proxy_handler; -COMMENT ON ACCESS METHOD hypercore_proxy IS 'Hypercore proxy index access method'; - -CREATE OPERATOR CLASS int4_ops -DEFAULT FOR TYPE int4 USING hypercore_proxy AS - OPERATOR 1 = (int4, int4), - FUNCTION 1 hashint4(int4); diff --git a/sql/updates/reverse-dev.sql b/sql/updates/reverse-dev.sql index bc918202f24..e69de29bb2d 100644 --- a/sql/updates/reverse-dev.sql +++ b/sql/updates/reverse-dev.sql @@ -1,93 +0,0 @@ --- Hypercore AM -DROP ACCESS METHOD IF EXISTS hypercore_proxy; -DROP FUNCTION IF EXISTS @extschema@.ts_hypercore_proxy_handler; -DROP ACCESS METHOD IF EXISTS hypercore; -DROP FUNCTION IF EXISTS @extschema@.ts_hypercore_handler; -DROP FUNCTION IF EXISTS _timescaledb_debug.is_compressed_tid; - -DROP FUNCTION IF EXISTS @extschema@.compress_chunk(uncompressed_chunk REGCLASS, if_not_compressed BOOLEAN, recompress BOOLEAN, hypercore_use_access_method BOOL); - -CREATE FUNCTION @extschema@.compress_chunk( - uncompressed_chunk REGCLASS, - if_not_compressed BOOLEAN = true, - recompress BOOLEAN = false -) RETURNS REGCLASS AS '@MODULE_PATHNAME@', 'ts_compress_chunk' LANGUAGE C STRICT 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, hypercore_use_access_method BOOL); - -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 -) -RETURNS INTEGER -AS '@MODULE_PATHNAME@', 'ts_policy_compression_add' -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", hypercore_use_access_method BOOL); - -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) -RETURNS BOOL -AS '@MODULE_PATHNAME@', 'ts_policies_add' -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, useam BOOLEAN); - -DROP PROCEDURE IF EXISTS _timescaledb_functions.policy_compression(job_id INTEGER, config JSONB); -DROP PROCEDURE IF EXISTS @extschema@.convert_to_columnstore(REGCLASS, BOOLEAN, BOOLEAN, BOOLEAN); -DROP PROCEDURE IF EXISTS @extschema@.convert_to_rowstore(REGCLASS, BOOLEAN); -DROP PROCEDURE IF EXISTS @extschema@.add_columnstore_policy(REGCLASS, "any", BOOL, INTERVAL, TIMESTAMPTZ, TEXT, INTERVAL, BOOL); -DROP PROCEDURE IF EXISTS @extschema@.remove_columnstore_policy(REGCLASS, BOOL); -DROP FUNCTION IF EXISTS @extschema@.hypertable_columnstore_stats(REGCLASS); -DROP FUNCTION IF EXISTS @extschema@.chunk_columnstore_stats(REGCLASS); - -ALTER EXTENSION timescaledb DROP VIEW timescaledb_information.hypertable_columnstore_settings; -ALTER EXTENSION timescaledb DROP VIEW timescaledb_information.chunk_columnstore_settings; - -DROP VIEW timescaledb_information.hypertable_columnstore_settings; -DROP VIEW timescaledb_information.chunk_columnstore_settings; - -DROP PROCEDURE IF EXISTS _timescaledb_functions.cagg_migrate_update_watermark(INTEGER); - --- Recreate `refresh_continuous_aggregate` procedure to remove the `force` argument -DROP PROCEDURE IF EXISTS @extschema@.refresh_continuous_aggregate (continuous_aggregate REGCLASS, window_start "any", window_end "any", force BOOLEAN); - -CREATE PROCEDURE @extschema@.refresh_continuous_aggregate( - continuous_aggregate REGCLASS, - window_start "any", - window_end "any" -) LANGUAGE C AS '@MODULE_PATHNAME@', 'ts_continuous_agg_refresh'; - --- Remove `include_tiered_data` argument from `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, - include_tiered_data BOOL -); -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 -) -RETURNS INTEGER -AS '@MODULE_PATHNAME@', 'ts_policy_refresh_cagg_add' -LANGUAGE C VOLATILE; - --- Merge chunks -DROP PROCEDURE IF EXISTS @extschema@.merge_chunks(chunk1 REGCLASS, chunk2 REGCLASS); -DROP PROCEDURE IF EXISTS @extschema@.merge_chunks(chunks REGCLASS[]); diff --git a/version.config b/version.config index f0cedf97f01..6cb6958dff3 100644 --- a/version.config +++ b/version.config @@ -1,3 +1,3 @@ version = 2.19.0-dev -update_from_version = 2.17.2 -downgrade_to_version = 2.17.2 +update_from_version = 2.18.0 +downgrade_to_version = 2.18.0