mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-14 01:10:37 +08:00
Release 2.11.0
This commit is contained in:
parent
19dd7bbd7a
commit
f58d8c20c2
13
CHANGELOG.md
13
CHANGELOG.md
@ -4,7 +4,18 @@
|
|||||||
`psql` with the `-X` flag to prevent any `.psqlrc` commands from
|
`psql` with the `-X` flag to prevent any `.psqlrc` commands from
|
||||||
accidentally triggering the load of a previous DB version.**
|
accidentally triggering the load of a previous DB version.**
|
||||||
|
|
||||||
## Unreleased
|
## 2.11.0 (2023-05-12)
|
||||||
|
|
||||||
|
This release contains new features and bug fixes since the 2.10.3 release.
|
||||||
|
We deem it moderate priority for upgrading.
|
||||||
|
|
||||||
|
This release includes these noteworthy features:
|
||||||
|
* Support for DML operations on compressed chunks:
|
||||||
|
* UPDATE/DELETE support
|
||||||
|
* Support for unique constraints on compressed chunks
|
||||||
|
* Support for `ON CONFLICT DO UPDATE`
|
||||||
|
* Support for `ON CONFLICT DO NOTHING`
|
||||||
|
* Join support for hierarchical Continuous Aggregates
|
||||||
|
|
||||||
**Features**
|
**Features**
|
||||||
* #5212 Allow pushdown of reference table joins
|
* #5212 Allow pushdown of reference table joins
|
||||||
|
@ -47,7 +47,8 @@ set(MOD_FILES
|
|||||||
updates/2.9.3--2.10.0.sql
|
updates/2.9.3--2.10.0.sql
|
||||||
updates/2.10.0--2.10.1.sql
|
updates/2.10.0--2.10.1.sql
|
||||||
updates/2.10.1--2.10.2.sql
|
updates/2.10.1--2.10.2.sql
|
||||||
updates/2.10.2--2.10.3.sql)
|
updates/2.10.2--2.10.3.sql
|
||||||
|
updates/2.10.3--2.11.0.sql)
|
||||||
|
|
||||||
# The downgrade file to generate a downgrade script for the current version, as
|
# The downgrade file to generate a downgrade script for the current version, as
|
||||||
# specified in version.config
|
# specified in version.config
|
||||||
|
72
sql/updates/2.10.3--2.11.0.sql
Normal file
72
sql/updates/2.10.3--2.11.0.sql
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
CREATE TABLE _timescaledb_catalog.continuous_aggs_watermark (
|
||||||
|
mat_hypertable_id integer NOT NULL,
|
||||||
|
watermark bigint NOT NULL,
|
||||||
|
-- table constraints
|
||||||
|
CONSTRAINT continuous_aggs_watermark_pkey PRIMARY KEY (mat_hypertable_id),
|
||||||
|
CONSTRAINT continuous_aggs_watermark_mat_hypertable_id_fkey FOREIGN KEY (mat_hypertable_id) REFERENCES _timescaledb_catalog.continuous_agg (mat_hypertable_id) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
GRANT SELECT ON _timescaledb_catalog.continuous_aggs_watermark TO PUBLIC;
|
||||||
|
|
||||||
|
SELECT pg_catalog.pg_extension_config_dump('_timescaledb_catalog.continuous_aggs_watermark', '');
|
||||||
|
|
||||||
|
CREATE FUNCTION _timescaledb_internal.cagg_watermark_materialized(hypertable_id INTEGER)
|
||||||
|
RETURNS INT8 AS '@MODULE_PATHNAME@', 'ts_continuous_agg_watermark_materialized' LANGUAGE C STABLE STRICT PARALLEL SAFE;
|
||||||
|
CREATE FUNCTION _timescaledb_internal.recompress_chunk_segmentwise(REGCLASS, BOOLEAN) RETURNS REGCLASS
|
||||||
|
AS '@MODULE_PATHNAME@', 'ts_recompress_chunk_segmentwise' LANGUAGE C STRICT VOLATILE;
|
||||||
|
CREATE FUNCTION _timescaledb_internal.get_compressed_chunk_index_for_recompression(REGCLASS) RETURNS REGCLASS
|
||||||
|
AS '@MODULE_PATHNAME@', 'ts_get_compressed_chunk_index_for_recompression' LANGUAGE C STRICT VOLATILE;
|
||||||
|
|
||||||
|
DROP FUNCTION _timescaledb_internal.dimension_is_finite;
|
||||||
|
DROP FUNCTION _timescaledb_internal.dimension_slice_get_constraint_sql;
|
||||||
|
|
||||||
|
CREATE SCHEMA _timescaledb_functions;
|
||||||
|
GRANT USAGE ON SCHEMA _timescaledb_functions TO PUBLIC;
|
||||||
|
|
||||||
|
-- migrate histogram support functions into _timescaledb_functions schema
|
||||||
|
ALTER FUNCTION _timescaledb_internal.hist_sfunc (state INTERNAL, val DOUBLE PRECISION, MIN DOUBLE PRECISION, MAX DOUBLE PRECISION, nbuckets INTEGER) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.hist_combinefunc(state1 INTERNAL, state2 INTERNAL) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.hist_serializefunc(INTERNAL) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.hist_deserializefunc(bytea, INTERNAL) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.hist_finalfunc(state INTERNAL, val DOUBLE PRECISION, MIN DOUBLE PRECISION, MAX DOUBLE PRECISION, nbuckets INTEGER) SET SCHEMA _timescaledb_functions;
|
||||||
|
|
||||||
|
-- migrate first/last support functions into _timescaledb_functions schema
|
||||||
|
ALTER FUNCTION _timescaledb_internal.first_sfunc(internal, anyelement, "any") SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.first_combinefunc(internal, internal) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.last_sfunc(internal, anyelement, "any") SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.last_combinefunc(internal, internal) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.bookend_finalfunc(internal, anyelement, "any") SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.bookend_serializefunc(internal) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.bookend_deserializefunc(bytea, internal) SET SCHEMA _timescaledb_functions;
|
||||||
|
|
||||||
|
DROP FUNCTION IF EXISTS _timescaledb_internal.is_main_table(regclass);
|
||||||
|
DROP FUNCTION IF EXISTS _timescaledb_internal.is_main_table(name, name);
|
||||||
|
DROP FUNCTION IF EXISTS _timescaledb_internal.hypertable_from_main_table(regclass);
|
||||||
|
DROP FUNCTION IF EXISTS _timescaledb_internal.main_table_from_hypertable(integer);
|
||||||
|
DROP FUNCTION IF EXISTS _timescaledb_internal.time_literal_sql(bigint, regtype);
|
||||||
|
|
||||||
|
ALTER FUNCTION _timescaledb_internal.compressed_data_in(CSTRING) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.compressed_data_out(_timescaledb_internal.compressed_data) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.compressed_data_send(_timescaledb_internal.compressed_data) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.compressed_data_recv(internal) SET SCHEMA _timescaledb_functions;
|
||||||
|
|
||||||
|
ALTER FUNCTION _timescaledb_internal.rxid_in(cstring) SET SCHEMA _timescaledb_functions;
|
||||||
|
ALTER FUNCTION _timescaledb_internal.rxid_out(@extschema@.rxid) SET SCHEMA _timescaledb_functions;
|
||||||
|
|
||||||
|
ALTER TABLE _timescaledb_config.bgw_job
|
||||||
|
ALTER COLUMN owner SET DEFAULT pg_catalog.quote_ident(current_role)::regrole;
|
||||||
|
|
||||||
|
ALTER TABLE _timescaledb_catalog.continuous_agg_migrate_plan
|
||||||
|
ADD COLUMN user_view_definition TEXT,
|
||||||
|
DROP CONSTRAINT continuous_agg_migrate_plan_mat_hypertable_id_fkey;
|
||||||
|
|
||||||
|
-- Log with events that will be sent out with the telemetry. The log
|
||||||
|
-- will be flushed after it has been sent out. We do not save it to
|
||||||
|
-- backups since it should not contain important data.
|
||||||
|
CREATE TABLE _timescaledb_catalog.telemetry_event (
|
||||||
|
created timestamptz NOT NULL DEFAULT current_timestamp,
|
||||||
|
tag name NOT NULL,
|
||||||
|
body jsonb NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
GRANT SELECT ON _timescaledb_catalog.telemetry_event TO PUBLIC;
|
@ -1,72 +0,0 @@
|
|||||||
CREATE TABLE _timescaledb_catalog.continuous_aggs_watermark (
|
|
||||||
mat_hypertable_id integer NOT NULL,
|
|
||||||
watermark bigint NOT NULL,
|
|
||||||
-- table constraints
|
|
||||||
CONSTRAINT continuous_aggs_watermark_pkey PRIMARY KEY (mat_hypertable_id),
|
|
||||||
CONSTRAINT continuous_aggs_watermark_mat_hypertable_id_fkey FOREIGN KEY (mat_hypertable_id) REFERENCES _timescaledb_catalog.continuous_agg (mat_hypertable_id) ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
GRANT SELECT ON _timescaledb_catalog.continuous_aggs_watermark TO PUBLIC;
|
|
||||||
|
|
||||||
SELECT pg_catalog.pg_extension_config_dump('_timescaledb_catalog.continuous_aggs_watermark', '');
|
|
||||||
|
|
||||||
CREATE FUNCTION _timescaledb_internal.cagg_watermark_materialized(hypertable_id INTEGER)
|
|
||||||
RETURNS INT8 AS '@MODULE_PATHNAME@', 'ts_continuous_agg_watermark_materialized' LANGUAGE C STABLE STRICT PARALLEL SAFE;
|
|
||||||
CREATE FUNCTION _timescaledb_internal.recompress_chunk_segmentwise(REGCLASS, BOOLEAN) RETURNS REGCLASS
|
|
||||||
AS '@MODULE_PATHNAME@', 'ts_recompress_chunk_segmentwise' LANGUAGE C STRICT VOLATILE;
|
|
||||||
CREATE FUNCTION _timescaledb_internal.get_compressed_chunk_index_for_recompression(REGCLASS) RETURNS REGCLASS
|
|
||||||
AS '@MODULE_PATHNAME@', 'ts_get_compressed_chunk_index_for_recompression' LANGUAGE C STRICT VOLATILE;
|
|
||||||
|
|
||||||
DROP FUNCTION _timescaledb_internal.dimension_is_finite;
|
|
||||||
DROP FUNCTION _timescaledb_internal.dimension_slice_get_constraint_sql;
|
|
||||||
|
|
||||||
CREATE SCHEMA _timescaledb_functions;
|
|
||||||
GRANT USAGE ON SCHEMA _timescaledb_functions TO PUBLIC;
|
|
||||||
|
|
||||||
-- migrate histogram support functions into _timescaledb_functions schema
|
|
||||||
ALTER FUNCTION _timescaledb_internal.hist_sfunc (state INTERNAL, val DOUBLE PRECISION, MIN DOUBLE PRECISION, MAX DOUBLE PRECISION, nbuckets INTEGER) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.hist_combinefunc(state1 INTERNAL, state2 INTERNAL) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.hist_serializefunc(INTERNAL) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.hist_deserializefunc(bytea, INTERNAL) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.hist_finalfunc(state INTERNAL, val DOUBLE PRECISION, MIN DOUBLE PRECISION, MAX DOUBLE PRECISION, nbuckets INTEGER) SET SCHEMA _timescaledb_functions;
|
|
||||||
|
|
||||||
-- migrate first/last support functions into _timescaledb_functions schema
|
|
||||||
ALTER FUNCTION _timescaledb_internal.first_sfunc(internal, anyelement, "any") SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.first_combinefunc(internal, internal) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.last_sfunc(internal, anyelement, "any") SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.last_combinefunc(internal, internal) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.bookend_finalfunc(internal, anyelement, "any") SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.bookend_serializefunc(internal) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.bookend_deserializefunc(bytea, internal) SET SCHEMA _timescaledb_functions;
|
|
||||||
|
|
||||||
DROP FUNCTION IF EXISTS _timescaledb_internal.is_main_table(regclass);
|
|
||||||
DROP FUNCTION IF EXISTS _timescaledb_internal.is_main_table(name, name);
|
|
||||||
DROP FUNCTION IF EXISTS _timescaledb_internal.hypertable_from_main_table(regclass);
|
|
||||||
DROP FUNCTION IF EXISTS _timescaledb_internal.main_table_from_hypertable(integer);
|
|
||||||
DROP FUNCTION IF EXISTS _timescaledb_internal.time_literal_sql(bigint, regtype);
|
|
||||||
|
|
||||||
ALTER FUNCTION _timescaledb_internal.compressed_data_in(CSTRING) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.compressed_data_out(_timescaledb_internal.compressed_data) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.compressed_data_send(_timescaledb_internal.compressed_data) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.compressed_data_recv(internal) SET SCHEMA _timescaledb_functions;
|
|
||||||
|
|
||||||
ALTER FUNCTION _timescaledb_internal.rxid_in(cstring) SET SCHEMA _timescaledb_functions;
|
|
||||||
ALTER FUNCTION _timescaledb_internal.rxid_out(@extschema@.rxid) SET SCHEMA _timescaledb_functions;
|
|
||||||
|
|
||||||
ALTER TABLE _timescaledb_config.bgw_job
|
|
||||||
ALTER COLUMN owner SET DEFAULT pg_catalog.quote_ident(current_role)::regrole;
|
|
||||||
|
|
||||||
ALTER TABLE _timescaledb_catalog.continuous_agg_migrate_plan
|
|
||||||
ADD COLUMN user_view_definition TEXT,
|
|
||||||
DROP CONSTRAINT continuous_agg_migrate_plan_mat_hypertable_id_fkey;
|
|
||||||
|
|
||||||
-- Log with events that will be sent out with the telemetry. The log
|
|
||||||
-- will be flushed after it has been sent out. We do not save it to
|
|
||||||
-- backups since it should not contain important data.
|
|
||||||
CREATE TABLE _timescaledb_catalog.telemetry_event (
|
|
||||||
created timestamptz NOT NULL DEFAULT current_timestamp,
|
|
||||||
tag name NOT NULL,
|
|
||||||
body jsonb NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
GRANT SELECT ON _timescaledb_catalog.telemetry_event TO PUBLIC;
|
|
@ -1,3 +1,3 @@
|
|||||||
version = 2.11.0-dev
|
version = 2.12.0-dev
|
||||||
update_from_version = 2.10.3
|
update_from_version = 2.11.0
|
||||||
downgrade_to_version = 2.10.3
|
downgrade_to_version = 2.10.3
|
||||||
|
Loading…
x
Reference in New Issue
Block a user