Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce experimental time_bucket_ng() function #3211

Merged
merged 1 commit into from Jun 21, 2021

Conversation

afiskon
Copy link
Contributor

@afiskon afiskon commented May 10, 2021

Introduce experimental time_bucket_ng() function

This patch adds time_bucket_ng() function to the experimental
schema. The "ng" part stands for "next generation". Unlike
current time_bucket() implementation the _ng version will support
months, years and timezones.

Current implementation doesn't claim to be complete. For instance,
it doesn't support timezones yet. The reasons to commit it in it's
current state are 1) to shorten the feedback loop 2) to start
experimenting with monthly buckets are soon as possible,
3) to reduce the unnecessary work of rebasing and resolving
conflicts 4) to make the work easier to the reviewers

See also #3211 (comment)

@afiskon afiskon requested a review from a team as a code owner May 10, 2021 12:16
@codecov
Copy link

codecov bot commented May 10, 2021

Codecov Report

Merging #3211 (35bc689) into master (cf5626b) will increase coverage by 0.00%.
The diff coverage is 96.15%.

❗ Current head 35bc689 differs from pull request most recent head 95058a7. Consider uploading reports for the commit 95058a7 to get more accurate results
Impacted file tree graph

@@           Coverage Diff           @@
##           master    #3211   +/-   ##
=======================================
  Coverage   90.61%   90.61%           
=======================================
  Files         211      212    +1     
  Lines       35536    35588   +52     
=======================================
+ Hits        32200    32249   +49     
- Misses       3336     3339    +3     
Impacted Files Coverage Δ
src/time_bucket_ng.c 96.15% <96.15%> (ø)
tsl/src/nodes/data_node_dispatch.c 97.08% <0.00%> (-0.25%) ⬇️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 71e8f13...95058a7. Read the comment docs.

@binakot
Copy link

binakot commented May 10, 2021

@afiskon, Hello!
Will this function be in addition to time_bucket()?
What are the differences from it?

@afiskon
Copy link
Contributor Author

afiskon commented May 10, 2021

@binakot Many users requested time_bucket but with the support of variable-sized buckets (e.g. months) or timezones and we try our best to provide this functionality. At this point, ts_date_trunc() is just an extended version of date_trunc(). You can do something like ts_date_trunc('1 year 3 months', ...) which can't be done with date_trunc(). The main difference from time_bucket() is that time_bucket() always works with fixed-sized buckets (hours, days, ...) and thus can be used in continuous aggregates. This PR is a kind of work in progress. We experiment with the code, gather feedback, and see what can be done next.

test/sql/timestamp.sql Outdated Show resolved Hide resolved
sql/ts_date_trunc.sql Outdated Show resolved Hide resolved
@afiskon afiskon force-pushed the ts_date_trunc_rebased branch 2 times, most recently from 1f8bc01 to dfdd92a Compare May 11, 2021 11:31
@afiskon afiskon requested review from jonatas and erimatnor May 11, 2021 11:47
sql/ts_date_trunc.sql Outdated Show resolved Hide resolved
sql/ts_date_trunc.sql Outdated Show resolved Hide resolved
src/ts_date_trunc.c Outdated Show resolved Hide resolved
src/ts_date_trunc.c Outdated Show resolved Hide resolved
src/ts_date_trunc.c Outdated Show resolved Hide resolved
src/ts_date_trunc.c Outdated Show resolved Hide resolved
sql/ts_date_trunc.sql Outdated Show resolved Hide resolved
@NunoFilipeSantos
Copy link
Contributor

This will be a candidate to our experimental schema, correct @mkindahl ?
If so, @afiskon please move the PR back to in progress.

@mkindahl
Copy link
Contributor

This will be a candidate to our experimental schema, correct @mkindahl ?
If so, @afiskon please move the PR back to in progress.

I think this is suitable for the experimental schema, yes.

test/expected/timestamp.out Outdated Show resolved Hide resolved
@afiskon afiskon changed the title Introduce ts_date_trunc function Variable-sized buckets a.k.a. ts_date_trunc function Jun 14, 2021
@afiskon afiskon changed the title Variable-sized buckets a.k.a. ts_date_trunc function Introduce ts_date_trunc function Jun 14, 2021
@afiskon afiskon changed the title Introduce ts_date_trunc function Introduce time_bucket_ng() function Jun 16, 2021
@afiskon afiskon changed the title Introduce time_bucket_ng() function Introduce experimental time_bucket_ng() function Jun 16, 2021
@afiskon afiskon force-pushed the ts_date_trunc_rebased branch 2 times, most recently from 92c6525 to 1ce41bb Compare June 16, 2021 12:41
@afiskon afiskon enabled auto-merge (rebase) June 16, 2021 12:42
@afiskon afiskon force-pushed the ts_date_trunc_rebased branch 2 times, most recently from b255456 to c06bdd1 Compare June 16, 2021 13:22
@mfundul
Copy link
Contributor

mfundul commented Jun 18, 2021

I don't quite like the heavy use of DirectFunctionCallX() calls. In the original time_bucket.c code the kernel of the computation is with preprocessor macros (e.g. #define TIME_BUCKET(period, timestamp, offset, min, max, result) \).

I think we could achieve the same overhead as the macros by using static inline functions in the place of those FMGR calls.

@afiskon
Copy link
Contributor Author

afiskon commented Jun 18, 2021

If this is a replacement for time_bucket, why do we only support 1 day as the minimum bucket size? I see in the code that timestamps are always converted to a Date type internally, which gives the granularity of days and drops timezone. Is this really what we want to do here?

What if someone wants to bucket 24 hours, 10 hours, 3 minutes, etc?

I see in the commit message that timezone support will be added later, but what about smaller buckets than 1 day?

@erimatnor Many thanks for the review! This is a good question. I think I answered this on a standup, but apparently on the one where not the entire team was present. My bad.

This is not the final version of the implementation. My current goal is to make the following query work properly:

CREATE MATERIALIZED VIEW conditions_summary_monthly
WITH (timescaledb.continuous) AS
SELECT device,
       timescaledb_experimental.time_bucket_ng('1 month', tstamp) AS bucket,
       AVG(temperature),
       MAX(temperature),
       MIN(temperature)
FROM conditions
GROUP BY device, bucket;

Then I will cover it with tests and submit another PR. Now we have experimental support of 1-month buckets.

The next step is to make N-month buckets work. Same idea - separate tests, separate PR, separate review, and we have experimental support of N-month buckets.

Then we can work on years - '1 year' buckets first, then '1 year, 3 months' and more complicated scenarios. Separate tests, separate code reviews, etc. Then we can start working for instance on timezones.

Days and hours can be added at any time since we already know they work. We just don't need to support (+ test, review) them in time_bucket_ng at the moment.

So the general idea is to decompose the large task, add the feature in incremental steps. Starting from the parts where there are the most unknowns, and thus where the risks are higher.

@afiskon
Copy link
Contributor Author

afiskon commented Jun 18, 2021

I don't quite like the heavy use of DirectFunctionCallX() calls. In the original time_bucket.c code the kernel of the computation is with preprocessor macros (e.g. #define TIME_BUCKET(period, timestamp, offset, min, max, result) \).

I think we could achieve the same overhead as the macros by using static inline functions in the place of those FMGR calls.

@mfundul Many thanks for the review. @erimatnor didn't like these calls as well but for different reasons. As I explained above #3211 (comment) we will not keep this code forever. There will be no DirectFunctionCallX in the final implementation. Please see the full reply.

@afiskon afiskon force-pushed the ts_date_trunc_rebased branch 2 times, most recently from ab926b3 to 18e5058 Compare June 18, 2021 14:23
@afiskon afiskon requested a review from erimatnor June 18, 2021 14:24
@erimatnor
Copy link
Contributor

erimatnor commented Jun 21, 2021

If this is a replacement for time_bucket, why do we only support 1 day as the minimum bucket size? I see in the code that timestamps are always converted to a Date type internally, which gives the granularity of days and drops timezone. Is this really what we want to do here?
What if someone wants to bucket 24 hours, 10 hours, 3 minutes, etc?
I see in the commit message that timezone support will be added later, but what about smaller buckets than 1 day?

@erimatnor Many thanks for the review! This is a good question. I think I answered this on a standup, but apparently on the one where not the entire team was present. My bad.

This is not the final version of the implementation. My current goal is to make the following query work properly:

CREATE MATERIALIZED VIEW conditions_summary_monthly
WITH (timescaledb.continuous) AS
SELECT device,
       timescaledb_experimental.time_bucket_ng('1 month', tstamp) AS bucket,
       AVG(temperature),
       MAX(temperature),
       MIN(temperature)
FROM conditions
GROUP BY device, bucket;

Then I will cover it with tests and submit another PR. Now we have experimental support of 1-month buckets.

I am not following the connection to continuous aggregates here. If we are removing limitations in the cagg implementation, we could just use, e.g., date_trunc instead, which already support weeks, months, years, and time zones, and is already readily available and familiar to users. I think support for date_trunc would provide immediate value over an experimental bucketing function. It would be helpful to provide this context in the PR description because it is easy to miss information if one has to dig through prior discussions to find it.

@afiskon afiskon force-pushed the ts_date_trunc_rebased branch 2 times, most recently from 60f6d72 to 05b68f3 Compare June 21, 2021 08:38
This patch adds time_bucket_ng() function to the experimental
schema. The "ng" part stands for "next generation". Unlike
current time_bucket() implementation the _ng version will support
months, years and timezones.

Current implementation doesn't claim to be complete. For instance,
it doesn't support timezones yet. The reasons to commit it in it's
current state are 1) to shorten the feedback loop 2) to start
experimenting with monthly buckets are soon as possible,
3) to reduce the unnecessary work of rebasing and resolving
conflicts 4) to make the work easier to the reviewers
@afiskon afiskon merged commit 33dfdcf into master Jun 21, 2021
@afiskon
Copy link
Contributor Author

afiskon commented Jun 21, 2021

I am not following the connection to continuous aggregates here. If we are removing limitations in the cagg implementation, we could just use, e.g., date_trunc instead, ...

@erimatnor Unfortunately, we can't use date_trunc in the general case because it doesn't support things like '5 months' and/or origin argument. Thus it's not very helpful for purposes named above. Although I think supporting date_trunc as well as our function at some point would be neat indeed.

@afiskon afiskon deleted the ts_date_trunc_rebased branch June 24, 2021 10:24
@NunoFilipeSantos NunoFilipeSantos added this to the TimescaleDB 2.4 milestone Jul 13, 2021
@gayyappan gayyappan mentioned this pull request Jul 26, 2021
gayyappan added a commit to gayyappan/timescaledb that referenced this pull request Jul 28, 2021
This release adds new experimental features since the 2.3.1 release.

The experimental features in this release are:
* APIs for chunk manipulation across data nodes in a distributed
hypertable setup. This includes the ability to add a data node and move
chunks to the new data node for cluster rebalancing.
* The `time_bucket_ng` function, a newer version of `time_bucket`. This
function supports years, months, days, hours, minutes, and seconds.

We’re committed to developing these experiments, giving the community
 a chance to provide early feedback and influence the direction of
TimescaleDB’s development. We’ll travel faster with your input!

Please create your feedback as a GitHub issue (using the
experimental-schema label), describe what you found, and tell us the
steps or share the code snip to recreate it.

This release also includes several bug fixes.

PostgreSQL 11 deprecation announcement
Timescale is working hard on our next exciting features. To make that
possible, we require functionality that is available in Postgres 12 and
above. For this reason, from TimescaleDB 2.4 onwards PostgreSQL 12 or
13 are required.

**Experimental Features**
* timescale#3293 Add timescaledb_experimental schema
* timescale#3302 Add block_new_chunks and allow_new_chunks API to experimental
schema. Add chunk based refresh_continuous_aggregate.
* timescale#3211 Introduce experimental time_bucket_ng function
* timescale#3366 Allow use of experimental time_bucket_ng function in continuous aggregates
* timescale#3408 Support for seconds, minutes and hours in time_bucket_ng

**Bugfixes**
* timescale#3401 Fix segfault for RelOptInfo without fdw_private
* timescale#3411 Verify compressed chunk validity for compressed path
* timescale#3416 Fix targetlist names for continuous aggregate views
* timescale#3434 Remove extension check from relcache invalidation callback
* timescale#3440 Fix remote_tx_heal_data_node to work with only current database

**Thanks**
* @fvannee for reporting an issue with hypertable expansion in functions
* @amalek215 for reporting an issue with cache invalidation during pg_class vacuum full
* @hardikm10 for reporting an issue with inserting into compressed chunks
* @dberardo-com and @iancmcc for reporting an issue with extension updates after renaming columns of continuous aggregates.
gayyappan added a commit to gayyappan/timescaledb that referenced this pull request Jul 28, 2021
This release adds new experimental features since the 2.3.1 release.

The experimental features in this release are:
* APIs for chunk manipulation across data nodes in a distributed
hypertable setup. This includes the ability to add a data node and move
chunks to the new data node for cluster rebalancing.
* The `time_bucket_ng` function, a newer version of `time_bucket`. This
function supports years, months, days, hours, minutes, and seconds.

We’re committed to developing these experiments, giving the community
 a chance to provide early feedback and influence the direction of
TimescaleDB’s development. We’ll travel faster with your input!

Please create your feedback as a GitHub issue (using the
experimental-schema label), describe what you found, and tell us the
steps or share the code snip to recreate it.

This release also includes several bug fixes.

PostgreSQL 11 deprecation announcement
Timescale is working hard on our next exciting features. To make that
possible, we require functionality that is available in Postgres 12 and
above. For this reason, from TimescaleDB 2.4 onwards PostgreSQL 12 or
13 are required.

**Experimental Features**
* timescale#3293 Add timescaledb_experimental schema
* timescale#3302 Add block_new_chunks and allow_new_chunks API to experimental
schema. Add chunk based refresh_continuous_aggregate.
* timescale#3211 Introduce experimental time_bucket_ng function
* timescale#3366 Allow use of experimental time_bucket_ng function in continuous aggregates
* timescale#3408 Support for seconds, minutes and hours in time_bucket_ng

**Bugfixes**
* timescale#3401 Fix segfault for RelOptInfo without fdw_private
* timescale#3411 Verify compressed chunk validity for compressed path
* timescale#3416 Fix targetlist names for continuous aggregate views
* timescale#3434 Remove extension check from relcache invalidation callback
* timescale#3440 Fix remote_tx_heal_data_node to work with only current database

**Thanks**
* @fvannee for reporting an issue with hypertable expansion in functions
* @amalek215 for reporting an issue with cache invalidation during pg_class vacuum full
* @hardikm10 for reporting an issue with inserting into compressed chunks
* @dberardo-com and @iancmcc for reporting an issue with extension updates after renaming columns of continuous aggregates.
gayyappan added a commit to gayyappan/timescaledb that referenced this pull request Jul 29, 2021
This release adds new experimental features since the 2.3.1 release.

The experimental features in this release are:
* APIs for chunk manipulation across data nodes in a distributed
hypertable setup. This includes the ability to add a data node and move
chunks to the new data node for cluster rebalancing.
* The `time_bucket_ng` function, a newer version of `time_bucket`. This
function supports years, months, days, hours, minutes, and seconds.

We’re committed to developing these experiments, giving the community
 a chance to provide early feedback and influence the direction of
TimescaleDB’s development. We’ll travel faster with your input!

Please create your feedback as a GitHub issue (using the
experimental-schema label), describe what you found, and tell us the
steps or share the code snip to recreate it.

This release also includes several bug fixes.

PostgreSQL 11 deprecation announcement
Timescale is working hard on our next exciting features. To make that
possible, we require functionality that is available in Postgres 12 and
above. For this reason, from TimescaleDB 2.4 onwards PostgreSQL 12 or
13 are required.

**Experimental Features**
* timescale#3293 Add timescaledb_experimental schema
* timescale#3302 Add block_new_chunks and allow_new_chunks API to experimental
schema. Add chunk based refresh_continuous_aggregate.
* timescale#3211 Introduce experimental time_bucket_ng function
* timescale#3366 Allow use of experimental time_bucket_ng function in continuous aggregates
* timescale#3408 Support for seconds, minutes and hours in time_bucket_ng

**Bugfixes**
* timescale#3401 Fix segfault for RelOptInfo without fdw_private
* timescale#3411 Verify compressed chunk validity for compressed path
* timescale#3416 Fix targetlist names for continuous aggregate views
* timescale#3434 Remove extension check from relcache invalidation callback
* timescale#3440 Fix remote_tx_heal_data_node to work with only current database

**Thanks**
* @fvannee for reporting an issue with hypertable expansion in functions
* @amalek215 for reporting an issue with cache invalidation during pg_class vacuum full
* @hardikm10 for reporting an issue with inserting into compressed chunks
* @dberardo-com and @iancmcc for reporting an issue with extension updates after renaming columns of continuous aggregates.
gayyappan added a commit to gayyappan/timescaledb that referenced this pull request Jul 29, 2021
This release adds new experimental features since the 2.3.1 release.

The experimental features in this release are:
* APIs for chunk manipulation across data nodes in a distributed
hypertable setup. This includes the ability to add a data node and move
chunks to the new data node for cluster rebalancing.
* The `time_bucket_ng` function, a newer version of `time_bucket`. This
function supports years, months, days, hours, minutes, and seconds.

We’re committed to developing these experiments, giving the community
 a chance to provide early feedback and influence the direction of
TimescaleDB’s development. We’ll travel faster with your input!

Please create your feedback as a GitHub issue (using the
experimental-schema label), describe what you found, and tell us the
steps or share the code snip to recreate it.

This release also includes several bug fixes.

PostgreSQL 11 deprecation announcement
Timescale is working hard on our next exciting features. To make that
possible, we require functionality that is available in Postgres 12 and
above. Postgres 11 is not supported with TimescaleDB 2.4.

**Experimental Features**
* timescale#3293 Add timescaledb_experimental schema
* timescale#3302 Add block_new_chunks and allow_new_chunks API to experimental
schema. Add chunk based refresh_continuous_aggregate.
* timescale#3211 Introduce experimental time_bucket_ng function
* timescale#3366 Allow use of experimental time_bucket_ng function in continuous aggregates
* timescale#3408 Support for seconds, minutes and hours in time_bucket_ng
* timescale#3446 Implement cleanup for chunk copy/move.

**Bugfixes**
* timescale#3401 Fix segfault for RelOptInfo without fdw_private
* timescale#3411 Verify compressed chunk validity for compressed path
* timescale#3416 Fix targetlist names for continuous aggregate views
* timescale#3434 Remove extension check from relcache invalidation callback
* timescale#3440 Fix remote_tx_heal_data_node to work with only current database

**Thanks**
* @fvannee for reporting an issue with hypertable expansion in functions
* @amalek215 for reporting an issue with cache invalidation during pg_class vacuum full
* @hardikm10 for reporting an issue with inserting into compressed chunks
* @dberardo-com and @iancmcc for reporting an issue with extension updates after renaming columns of continuous aggregates.
gayyappan added a commit to gayyappan/timescaledb that referenced this pull request Jul 29, 2021
This release adds new experimental features since the 2.3.1 release.

The experimental features in this release are:
* APIs for chunk manipulation across data nodes in a distributed
hypertable setup. This includes the ability to add a data node and move
chunks to the new data node for cluster rebalancing.
* The `time_bucket_ng` function, a newer version of `time_bucket`. This
function supports years, months, days, hours, minutes, and seconds.

We’re committed to developing these experiments, giving the community
 a chance to provide early feedback and influence the direction of
TimescaleDB’s development. We’ll travel faster with your input!

Please create your feedback as a GitHub issue (using the
experimental-schema label), describe what you found, and tell us the
steps or share the code snip to recreate it.

This release also includes several bug fixes.

PostgreSQL 11 deprecation announcement
Timescale is working hard on our next exciting features. To make that
possible, we require functionality that is available in Postgres 12 and
above. Postgres 11 is not supported with TimescaleDB 2.4.

**Experimental Features**
* timescale#3293 Add timescaledb_experimental schema
* timescale#3302 Add block_new_chunks and allow_new_chunks API to experimental
schema. Add chunk based refresh_continuous_aggregate.
* timescale#3211 Introduce experimental time_bucket_ng function
* timescale#3366 Allow use of experimental time_bucket_ng function in continuous aggregates
* timescale#3408 Support for seconds, minutes and hours in time_bucket_ng
* timescale#3446 Implement cleanup for chunk copy/move.

**Bugfixes**
* timescale#3401 Fix segfault for RelOptInfo without fdw_private
* timescale#3411 Verify compressed chunk validity for compressed path
* timescale#3416 Fix targetlist names for continuous aggregate views
* timescale#3434 Remove extension check from relcache invalidation callback
* timescale#3440 Fix remote_tx_heal_data_node to work with only current database

**Thanks**
* @fvannee for reporting an issue with hypertable expansion in functions
* @amalek215 for reporting an issue with cache invalidation during pg_class vacuum full
* @hardikm10 for reporting an issue with inserting into compressed chunks
* @dberardo-com and @iancmcc for reporting an issue with extension updates after renaming columns of continuous aggregates.
gayyappan added a commit to gayyappan/timescaledb that referenced this pull request Jul 29, 2021
This release adds new experimental features since the 2.3.1 release.

The experimental features in this release are:
* APIs for chunk manipulation across data nodes in a distributed
hypertable setup. This includes the ability to add a data node and move
chunks to the new data node for cluster rebalancing.
* The `time_bucket_ng` function, a newer version of `time_bucket`. This
function supports years, months, days, hours, minutes, and seconds.

We’re committed to developing these experiments, giving the community
 a chance to provide early feedback and influence the direction of
TimescaleDB’s development. We’ll travel faster with your input!

Please create your feedback as a GitHub issue (using the
experimental-schema label), describe what you found, and tell us the
steps or share the code snip to recreate it.

This release also includes several bug fixes.

PostgreSQL 11 deprecation announcement
Timescale is working hard on our next exciting features. To make that
possible, we require functionality that is available in Postgres 12 and
above. Postgres 11 is not supported with TimescaleDB 2.4.

**Experimental Features**
* timescale#3293 Add timescaledb_experimental schema
* timescale#3302 Add block_new_chunks and allow_new_chunks API to experimental
schema. Add chunk based refresh_continuous_aggregate.
* timescale#3211 Introduce experimental time_bucket_ng function
* timescale#3366 Allow use of experimental time_bucket_ng function in continuous aggregates
* timescale#3408 Support for seconds, minutes and hours in time_bucket_ng
* timescale#3446 Implement cleanup for chunk copy/move.

**Bugfixes**
* timescale#3401 Fix segfault for RelOptInfo without fdw_private
* timescale#3411 Verify compressed chunk validity for compressed path
* timescale#3416 Fix targetlist names for continuous aggregate views
* timescale#3434 Remove extension check from relcache invalidation callback
* timescale#3440 Fix remote_tx_heal_data_node to work with only current database

**Thanks**
* @fvannee for reporting an issue with hypertable expansion in functions
* @amalek215 for reporting an issue with cache invalidation during pg_class vacuum full
* @hardikm10 for reporting an issue with inserting into compressed chunks
* @dberardo-com and @iancmcc for reporting an issue with extension updates after renaming columns of continuous aggregates.
gayyappan added a commit to gayyappan/timescaledb that referenced this pull request Jul 29, 2021
This release adds new experimental features since the 2.3.1 release.

The experimental features in this release are:
* APIs for chunk manipulation across data nodes in a distributed
hypertable setup. This includes the ability to add a data node and move
chunks to the new data node for cluster rebalancing.
* The `time_bucket_ng` function, a newer version of `time_bucket`. This
function supports years, months, days, hours, minutes, and seconds.

We’re committed to developing these experiments, giving the community
 a chance to provide early feedback and influence the direction of
TimescaleDB’s development. We’ll travel faster with your input!

Please create your feedback as a GitHub issue (using the
experimental-schema label), describe what you found, and tell us the
steps or share the code snip to recreate it.

This release also includes several bug fixes.

PostgreSQL 11 deprecation announcement
Timescale is working hard on our next exciting features. To make that
possible, we require functionality that is available in Postgres 12 and
above. Postgres 11 is not supported with TimescaleDB 2.4.

**Experimental Features**
* timescale#3293 Add timescaledb_experimental schema
* timescale#3302 Add block_new_chunks and allow_new_chunks API to experimental
schema. Add chunk based refresh_continuous_aggregate.
* timescale#3211 Introduce experimental time_bucket_ng function
* timescale#3366 Allow use of experimental time_bucket_ng function in continuous aggregates
* timescale#3408 Support for seconds, minutes and hours in time_bucket_ng
* timescale#3446 Implement cleanup for chunk copy/move.

**Bugfixes**
* timescale#3401 Fix segfault for RelOptInfo without fdw_private
* timescale#3411 Verify compressed chunk validity for compressed path
* timescale#3416 Fix targetlist names for continuous aggregate views
* timescale#3434 Remove extension check from relcache invalidation callback
* timescale#3440 Fix remote_tx_heal_data_node to work with only current database

**Thanks**
* @fvannee for reporting an issue with hypertable expansion in functions
* @amalek215 for reporting an issue with cache invalidation during pg_class vacuum full
* @hardikm10 for reporting an issue with inserting into compressed chunks
* @dberardo-com and @iancmcc for reporting an issue with extension updates after renaming columns of continuous aggregates.
gayyappan added a commit that referenced this pull request Jul 29, 2021
This release adds new experimental features since the 2.3.1 release.

The experimental features in this release are:
* APIs for chunk manipulation across data nodes in a distributed
hypertable setup. This includes the ability to add a data node and move
chunks to the new data node for cluster rebalancing.
* The `time_bucket_ng` function, a newer version of `time_bucket`. This
function supports years, months, days, hours, minutes, and seconds.

We’re committed to developing these experiments, giving the community
 a chance to provide early feedback and influence the direction of
TimescaleDB’s development. We’ll travel faster with your input!

Please create your feedback as a GitHub issue (using the
experimental-schema label), describe what you found, and tell us the
steps or share the code snip to recreate it.

This release also includes several bug fixes.

PostgreSQL 11 deprecation announcement
Timescale is working hard on our next exciting features. To make that
possible, we require functionality that is available in Postgres 12 and
above. Postgres 11 is not supported with TimescaleDB 2.4.

**Experimental Features**
* #3293 Add timescaledb_experimental schema
* #3302 Add block_new_chunks and allow_new_chunks API to experimental
schema. Add chunk based refresh_continuous_aggregate.
* #3211 Introduce experimental time_bucket_ng function
* #3366 Allow use of experimental time_bucket_ng function in continuous aggregates
* #3408 Support for seconds, minutes and hours in time_bucket_ng
* #3446 Implement cleanup for chunk copy/move.

**Bugfixes**
* #3401 Fix segfault for RelOptInfo without fdw_private
* #3411 Verify compressed chunk validity for compressed path
* #3416 Fix targetlist names for continuous aggregate views
* #3434 Remove extension check from relcache invalidation callback
* #3440 Fix remote_tx_heal_data_node to work with only current database

**Thanks**
* @fvannee for reporting an issue with hypertable expansion in functions
* @amalek215 for reporting an issue with cache invalidation during pg_class vacuum full
* @hardikm10 for reporting an issue with inserting into compressed chunks
* @dberardo-com and @iancmcc for reporting an issue with extension updates after renaming columns of continuous aggregates.
gayyappan added a commit that referenced this pull request Jul 29, 2021
This release adds new experimental features since the 2.3.1 release.

The experimental features in this release are:
* APIs for chunk manipulation across data nodes in a distributed
hypertable setup. This includes the ability to add a data node and move
chunks to the new data node for cluster rebalancing.
* The `time_bucket_ng` function, a newer version of `time_bucket`. This
function supports years, months, days, hours, minutes, and seconds.

We’re committed to developing these experiments, giving the community
 a chance to provide early feedback and influence the direction of
TimescaleDB’s development. We’ll travel faster with your input!

Please create your feedback as a GitHub issue (using the
experimental-schema label), describe what you found, and tell us the
steps or share the code snip to recreate it.

This release also includes several bug fixes.

PostgreSQL 11 deprecation announcement
Timescale is working hard on our next exciting features. To make that
possible, we require functionality that is available in Postgres 12 and
above. Postgres 11 is not supported with TimescaleDB 2.4.

**Experimental Features**
* #3293 Add timescaledb_experimental schema
* #3302 Add block_new_chunks and allow_new_chunks API to experimental
schema. Add chunk based refresh_continuous_aggregate.
* #3211 Introduce experimental time_bucket_ng function
* #3366 Allow use of experimental time_bucket_ng function in continuous aggregates
* #3408 Support for seconds, minutes and hours in time_bucket_ng
* #3446 Implement cleanup for chunk copy/move.

**Bugfixes**
* #3401 Fix segfault for RelOptInfo without fdw_private
* #3411 Verify compressed chunk validity for compressed path
* #3416 Fix targetlist names for continuous aggregate views
* #3434 Remove extension check from relcache invalidation callback
* #3440 Fix remote_tx_heal_data_node to work with only current database

**Thanks**
* @fvannee for reporting an issue with hypertable expansion in functions
* @amalek215 for reporting an issue with cache invalidation during pg_class vacuum full
* @hardikm10 for reporting an issue with inserting into compressed chunks
* @dberardo-com and @iancmcc for reporting an issue with extension updates after renaming columns of continuous aggregates.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants