mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-17 19:13:16 +08:00
Release 2.4.2
This release contains bug fixes since the 2.4.1 release. We deem it high priority to upgrade. **Bugfixes** * #3437 Rename on all continuous aggregate objects * #3469 Use signal-safe functions in signal handler * #3520 Modify compression job processing logic * #3527 Fix time_bucket_ng behaviour with origin argument * #3532 Fix bootstrap with regresschecks disabled * #3574 Fix failure on job execution by background worker * #3590 Call cleanup functions on backend exit **Thanks** * @jankatins for reporting a crash with background workers * @LutzWeischerFujitsu for reporting an issue with bootstrap
This commit is contained in:
parent
592e0bd46e
commit
3f944bee82
18
CHANGELOG.md
18
CHANGELOG.md
@ -4,6 +4,24 @@
|
|||||||
`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.**
|
||||||
|
|
||||||
|
## 2.4.2 (2021-09-21)
|
||||||
|
|
||||||
|
This release contains bug fixes since the 2.4.1 release.
|
||||||
|
We deem it high priority to upgrade.
|
||||||
|
|
||||||
|
**Bugfixes**
|
||||||
|
* #3437 Rename on all continuous aggregate objects
|
||||||
|
* #3469 Use signal-safe functions in signal handler
|
||||||
|
* #3520 Modify compression job processing logic
|
||||||
|
* #3527 Fix time_bucket_ng behaviour with origin argument
|
||||||
|
* #3532 Fix bootstrap with regresschecks disabled
|
||||||
|
* #3574 Fix failure on job execution by background worker
|
||||||
|
* #3590 Call cleanup functions on backend exit
|
||||||
|
|
||||||
|
**Thanks**
|
||||||
|
* @jankatins for reporting a crash with background workers
|
||||||
|
* @LutzWeischerFujitsu for reporting an issue with bootstrap
|
||||||
|
|
||||||
## 2.4.1 (2021-08-19)
|
## 2.4.1 (2021-08-19)
|
||||||
|
|
||||||
This release contains bug fixes since the 2.4.0 release. We deem it
|
This release contains bug fixes since the 2.4.0 release. We deem it
|
||||||
|
@ -28,7 +28,8 @@ set(MOD_FILES
|
|||||||
updates/2.2.1--2.3.0.sql
|
updates/2.2.1--2.3.0.sql
|
||||||
updates/2.3.0--2.3.1.sql
|
updates/2.3.0--2.3.1.sql
|
||||||
updates/2.3.1--2.4.0.sql
|
updates/2.3.1--2.4.0.sql
|
||||||
updates/2.4.0--2.4.1.sql)
|
updates/2.4.0--2.4.1.sql
|
||||||
|
updates/2.4.1--2.4.2.sql)
|
||||||
|
|
||||||
# Files for downgrade scripts. This should only include files for downgrade to
|
# Files for downgrade scripts. This should only include files for downgrade to
|
||||||
# previous version since we do not support skipping versions when downgrading
|
# previous version since we do not support skipping versions when downgrading
|
||||||
|
84
sql/updates/2.4.1--2.4.2.sql
Normal file
84
sql/updates/2.4.1--2.4.2.sql
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
DROP FUNCTION IF EXISTS _timescaledb_internal.time_col_name_for_chunk(name,name);
|
||||||
|
DROP FUNCTION IF EXISTS _timescaledb_internal.time_col_type_for_chunk(name,name);
|
||||||
|
|
||||||
|
-- Handle column renames for continuous aggregates that were not
|
||||||
|
-- handled correctly and fix it in the update. We save the information
|
||||||
|
-- in a table.
|
||||||
|
CREATE UNLOGGED TABLE rename_tables (
|
||||||
|
user_view regclass,
|
||||||
|
new_name text,
|
||||||
|
old_name text,
|
||||||
|
partial_view regclass,
|
||||||
|
direct_view regclass,
|
||||||
|
mat_table regclass,
|
||||||
|
hypertable_id int
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Compare the user view and the direct view of each continuous
|
||||||
|
-- aggregate to figure out what columns that were renamed on the user
|
||||||
|
-- view but which did not propagate to the other objects of the
|
||||||
|
-- continuous aggregate since this did not work in previous versions.
|
||||||
|
WITH
|
||||||
|
objs AS (
|
||||||
|
SELECT format('%I.%I', user_view_schema, user_view_name)::regclass AS user_view,
|
||||||
|
format('%I.%I', direct_view_schema, direct_view_name)::regclass AS direct_view,
|
||||||
|
format('%I.%I', partial_view_schema, partial_view_name)::regclass AS partial_view,
|
||||||
|
format('%I.%I', schema_name, table_name)::regclass AS mat_table,
|
||||||
|
mat_hypertable_id AS mat_id
|
||||||
|
FROM _timescaledb_catalog.continuous_agg
|
||||||
|
JOIN _timescaledb_catalog.hypertable ON mat_hypertable_id = id),
|
||||||
|
user_view AS (
|
||||||
|
SELECT attrelid, attname, attnum, mat_id
|
||||||
|
FROM objs, pg_attribute
|
||||||
|
WHERE attrelid = objs.user_view),
|
||||||
|
direct_view AS (
|
||||||
|
SELECT attrelid, attname, attnum, mat_id
|
||||||
|
FROM objs, pg_attribute
|
||||||
|
WHERE attrelid = objs.direct_view)
|
||||||
|
INSERT INTO rename_tables
|
||||||
|
SELECT (SELECT user_view FROM objs WHERE uv.attrelid = user_view),
|
||||||
|
uv.attname AS new_name,
|
||||||
|
dv.attname AS old_name,
|
||||||
|
(SELECT partial_view FROM objs WHERE uv.attrelid = user_view),
|
||||||
|
(SELECT direct_view FROM objs WHERE uv.attrelid = user_view),
|
||||||
|
(SELECT mat_table FROM objs WHERE uv.attrelid = user_view),
|
||||||
|
(SELECT mat_id FROM objs WHERE uv.attrelid = user_view)
|
||||||
|
FROM user_view uv JOIN direct_view dv USING (mat_id, attnum)
|
||||||
|
WHERE uv.attname != dv.attname;
|
||||||
|
|
||||||
|
CREATE PROCEDURE alter_table_column(cagg regclass, relation regclass, old_column_name name, new_column_name name) AS $$
|
||||||
|
BEGIN
|
||||||
|
EXECUTE format('ALTER TABLE %s RENAME COLUMN %I TO %I', relation, old_column_name, new_column_name);
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- Rename the columns for all the associated objects for continuous
|
||||||
|
-- aggregates that have renamed columns. Also rename the column in the
|
||||||
|
-- dimension table.
|
||||||
|
DO
|
||||||
|
$$
|
||||||
|
DECLARE
|
||||||
|
user_view regclass;
|
||||||
|
new_name name;
|
||||||
|
old_name name;
|
||||||
|
partial_view regclass;
|
||||||
|
direct_view regclass;
|
||||||
|
mat_table regclass;
|
||||||
|
ht_id int;
|
||||||
|
BEGIN
|
||||||
|
FOR user_view, new_name, old_name, partial_view, direct_view, mat_table, ht_id IN
|
||||||
|
SELECT * FROM rename_tables
|
||||||
|
LOOP
|
||||||
|
-- There is no RENAME COLUMN for views, but we can use ALTER TABLE
|
||||||
|
-- to rename a column in a view.
|
||||||
|
CALL alter_table_column(user_view, partial_view, old_name, new_name);
|
||||||
|
CALL alter_table_column(user_view, direct_view, old_name, new_name);
|
||||||
|
CALL alter_table_column(user_view, mat_table, old_name, new_name);
|
||||||
|
UPDATE _timescaledb_catalog.dimension SET column_name = new_name
|
||||||
|
WHERE hypertable_id = ht_id AND column_name = old_name;
|
||||||
|
END LOOP;
|
||||||
|
END
|
||||||
|
$$;
|
||||||
|
|
||||||
|
DROP PROCEDURE alter_table_column;
|
||||||
|
DROP TABLE rename_tables;
|
@ -1,84 +0,0 @@
|
|||||||
DROP FUNCTION _timescaledb_internal.time_col_name_for_chunk(name,name);
|
|
||||||
DROP FUNCTION _timescaledb_internal.time_col_type_for_chunk(name,name);
|
|
||||||
|
|
||||||
-- Handle column renames for continuous aggregates that were not
|
|
||||||
-- handled correctly and fix it in the update. We save the information
|
|
||||||
-- in a table.
|
|
||||||
CREATE UNLOGGED TABLE rename_tables (
|
|
||||||
user_view regclass,
|
|
||||||
new_name text,
|
|
||||||
old_name text,
|
|
||||||
partial_view regclass,
|
|
||||||
direct_view regclass,
|
|
||||||
mat_table regclass,
|
|
||||||
hypertable_id int
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Compare the user view and the direct view of each continuous
|
|
||||||
-- aggregate to figure out what columns that were renamed on the user
|
|
||||||
-- view but which did not propagate to the other objects of the
|
|
||||||
-- continuous aggregate since this did not work in previous versions.
|
|
||||||
WITH
|
|
||||||
objs AS (
|
|
||||||
SELECT format('%I.%I', user_view_schema, user_view_name)::regclass AS user_view,
|
|
||||||
format('%I.%I', direct_view_schema, direct_view_name)::regclass AS direct_view,
|
|
||||||
format('%I.%I', partial_view_schema, partial_view_name)::regclass AS partial_view,
|
|
||||||
format('%I.%I', schema_name, table_name)::regclass AS mat_table,
|
|
||||||
mat_hypertable_id AS mat_id
|
|
||||||
FROM _timescaledb_catalog.continuous_agg
|
|
||||||
JOIN _timescaledb_catalog.hypertable ON mat_hypertable_id = id),
|
|
||||||
user_view AS (
|
|
||||||
SELECT attrelid, attname, attnum, mat_id
|
|
||||||
FROM objs, pg_attribute
|
|
||||||
WHERE attrelid = objs.user_view),
|
|
||||||
direct_view AS (
|
|
||||||
SELECT attrelid, attname, attnum, mat_id
|
|
||||||
FROM objs, pg_attribute
|
|
||||||
WHERE attrelid = objs.direct_view)
|
|
||||||
INSERT INTO rename_tables
|
|
||||||
SELECT (SELECT user_view FROM objs WHERE uv.attrelid = user_view),
|
|
||||||
uv.attname AS new_name,
|
|
||||||
dv.attname AS old_name,
|
|
||||||
(SELECT partial_view FROM objs WHERE uv.attrelid = user_view),
|
|
||||||
(SELECT direct_view FROM objs WHERE uv.attrelid = user_view),
|
|
||||||
(SELECT mat_table FROM objs WHERE uv.attrelid = user_view),
|
|
||||||
(SELECT mat_id FROM objs WHERE uv.attrelid = user_view)
|
|
||||||
FROM user_view uv JOIN direct_view dv USING (mat_id, attnum)
|
|
||||||
WHERE uv.attname != dv.attname;
|
|
||||||
|
|
||||||
CREATE PROCEDURE alter_table_column(cagg regclass, relation regclass, old_column_name name, new_column_name name) AS $$
|
|
||||||
BEGIN
|
|
||||||
EXECUTE format('ALTER TABLE %s RENAME COLUMN %I TO %I', relation, old_column_name, new_column_name);
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE plpgsql;
|
|
||||||
|
|
||||||
-- Rename the columns for all the associated objects for continuous
|
|
||||||
-- aggregates that have renamed columns. Also rename the column in the
|
|
||||||
-- dimension table.
|
|
||||||
DO
|
|
||||||
$$
|
|
||||||
DECLARE
|
|
||||||
user_view regclass;
|
|
||||||
new_name name;
|
|
||||||
old_name name;
|
|
||||||
partial_view regclass;
|
|
||||||
direct_view regclass;
|
|
||||||
mat_table regclass;
|
|
||||||
ht_id int;
|
|
||||||
BEGIN
|
|
||||||
FOR user_view, new_name, old_name, partial_view, direct_view, mat_table, ht_id IN
|
|
||||||
SELECT * FROM rename_tables
|
|
||||||
LOOP
|
|
||||||
-- There is no RENAME COLUMN for views, but we can use ALTER TABLE
|
|
||||||
-- to rename a column in a view.
|
|
||||||
CALL alter_table_column(user_view, partial_view, old_name, new_name);
|
|
||||||
CALL alter_table_column(user_view, direct_view, old_name, new_name);
|
|
||||||
CALL alter_table_column(user_view, mat_table, old_name, new_name);
|
|
||||||
UPDATE _timescaledb_catalog.dimension SET column_name = new_name
|
|
||||||
WHERE hypertable_id = ht_id AND column_name = old_name;
|
|
||||||
END LOOP;
|
|
||||||
END
|
|
||||||
$$;
|
|
||||||
|
|
||||||
DROP PROCEDURE alter_table_column;
|
|
||||||
DROP TABLE rename_tables;
|
|
@ -1,3 +1,3 @@
|
|||||||
version = 2.5.0-dev
|
version = 2.5.0-dev
|
||||||
update_from_version = 2.4.1
|
update_from_version = 2.4.2
|
||||||
downgrade_to_version = 2.4.1
|
downgrade_to_version = 2.4.1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user