From 44569138011638a0da5d35c6debd175b1b106ec5 Mon Sep 17 00:00:00 2001 From: naisila Date: Fri, 20 Jun 2025 18:21:34 +0200 Subject: [PATCH 1/2] Add Changelog entries for 13.1.0, 13.0.4, 12.1.8 13.1.0 https://github.com/citusdata/citus/pull/8006 13.0.4 https://github.com/citusdata/citus/pull/8005 12.1.8 https://github.com/citusdata/citus/pull/8004 --- CHANGELOG.md | 149 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 146 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 451e6e433..d4c7c7d60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,147 @@ +### citus v13.1.0 (May 30th, 2025) ### + +* Adds `citus_stat_counters` view that can be used to query + stat counters that Citus collects while the feature is enabled, which is + controlled by citus.enable_stat_counters. `citus_stat_counters()` can be + used to query the stat counters for the provided database oid and + `citus_stat_counters_reset()` can be used to reset them for the provided + database oid or for the current database if nothing or 0 is provided (#7917) + +* Adds `citus_nodes` view that displays the node name, port role, and "active" + for nodes in the cluster (#7968) + +* Adds `citus_is_primary_node()` UDF to determine if the current node is a + primary node in the cluster (#7720) + +* Adds support for propagating `GRANT/REVOKE` rights on table columns (#7918) + +* Adds support for propagating `REASSIGN OWNED BY` commands (#7319) + +* Adds support for propagating `CREATE`/`DROP` database from all nodes (#7240, + #7253, #7359) + +* Propagates `SECURITY LABEL ON ROLE` statement from any node (#7508) + +* Adds support for issuing role management commands from worker nodes (#7278) + +* Adds support for propagating `ALTER USER RENAME` commands (#7204) + +* Adds support for propagating `ALTER DATABASE SET ..` commands + (#7181) + +* Adds support for propagating `SECURITY LABEL` on tables and columns (#7956) + +* Adds support for propagating `COMMENT ON /` commands (#7388) + +* Moves some of the internal citus functions from `pg_catalog` to + `citus_internal` schema (#7473, #7470, #7466, 7456, 7450) + +* Adjusts `max_prepared_transactions` only when it's set to default on PG >= 16 + (#7712) + +* Adds skip_qualify_public param to shard_name() UDF to allow qualifying for + "public" schema when needed (#8014) + +* Allows `citus_*_size` on indexes on a distributed tables (#7271) + +* Allows `GRANT ADMIN` to now also be `INHERIT` or `SET` in support of PG16 + +* Makes sure `worker_copy_table_to_node` errors out with Citus tables (#7662) + +* Adds information to explain output when using + `citus.explain_distributed_queries=false` (#7412) + +* Logs username in the failed connection message (#7432) + +* Makes sure to avoid incorrectly pushing-down the outer joins between + distributed tables and recurring relations (like reference tables, local + tables and `VALUES(..)` etc.) prior to PG 17 (#7937) + +* Prevents incorrectly pushing `nextval()` call down to workers to avoid using + incorrect sequence value for some types of `INSERT .. SELECT`s (#7976) + +* Makes sure to prevent `INSERT INTO ... SELECT` queries involving subfield or + sublink, to avoid crashes (#7912) + +* Makes sure to take improvement_threshold into the account + in `citus_add_rebalance_strategy()` (#7247) + +* Makes sure to disallow creating a replicated distributed + table concurrently (#7219) + +* Fixes a bug that causes omitting `CASCADE` clause for the commands sent to + workers for `REVOKE` commands on tables (#7958) + +* Fixes an issue detected using address sanitizer (#7948, #7949) + +* Fixes a bug in deparsing of shard query in case of "output-table column" name + conflict (#7932) + +* Fixes a crash in columnar custom scan that happens when a columnar table is + used in a join (#7703) + +* Fixes `MERGE` command when insert value does not have source distributed + column (#7627) + +* Fixes performance issue when using `\d tablename` on a server with many + tables (#7577) + +* Fixes performance issue in `GetForeignKeyOids` on systems with many + constraints (#7580) + +* Fixes performance issue when distributing a table that depends on an + extension (#7574) + +* Fixes performance issue when creating distributed tables if many already + exist (#7575) + +* Fixes a crash caused by some form of `ALTER TABLE ADD COLUMN` statements. When + adding multiple columns, if one of the `ADD COLUMN` statements contains a + `FOREIGN` constraint ommitting the referenced + columns in the statement, a `SEGFAULT` occurs (#7522) + +* Fixes assertion failure in maintenance daemon during Citus upgrades (#7537) + +* Fixes segmentation fault when using `CASE WHEN` in `DO` block functions + (#7554) + +* Fixes undefined behavior in `master_disable_node` due to argument mismatch + (#7492) + +* Fixes incorrect propagating of `GRANTED BY` and `CASCADE/RESTRICT` clauses + for `REVOKE` statements (#7451) + +* Fixes the incorrect column count after `ALTER TABLE` (#7379) + +* Fixes timeout when underlying socket is changed for an inter-node connection + (#7377) + +* Fixes memory leaks (#7441, #7440) + +* Fixes leaking of memory and memory contexts when tracking foreign keys between + Citus tables (#7236) + +* Fixes a potential segfault for background rebalancer (#7694) + +* Fixes potential `NULL` dereference in casual clocks (#7704) + +### citus v13.0.4 (May 29th, 2025) ### + +* Fixes an issue detected using address sanitizer (#7966) + +* Error out for queries with outer joins and pseudoconstant quals in versions + prior to PG 17 (#7937) + +### citus v12.1.8 (May 29, 2025) ### + +* Fixes a crash in left outer joins that can happen when there is an an + aggregate on a column from the inner side of the join (#7904) + +* Fixes an issue detected using address sanitizer (#7965) + +* Fixes a crash when executing a prepared CALL, which is not pure SQL but +available with some drivers like npgsql and jpgdbc (#7288) + ### citus v13.0.3 (March 20th, 2025) ### * Fixes a version bump issue in 13.0.2 @@ -100,9 +244,8 @@ * Allows overwriting host name for all inter-node connections by supporting "host" parameter in citus.node_conninfo (#7541) -* Changes the order in which the locks are acquired for the target and - reference tables, when a modify request is initiated from a worker - node that is not the "FirstWorkerNode" (#7542) +* Avoids distributed deadlocks by changing the order in which the locks are + acquired for the target and reference tables (#7542) * Fixes a performance issue when distributing a table that depends on an extension (#7574) From 4cd8bb1b6759574d74cf6f8f7d1321e0b8972152 Mon Sep 17 00:00:00 2001 From: naisila Date: Fri, 20 Jun 2025 18:23:13 +0200 Subject: [PATCH 2/2] Bump Citus version to 13.2devel --- configure | 18 +++++++-------- configure.ac | 2 +- src/backend/distributed/citus.control | 2 +- .../distributed/sql/citus--13.1-1--13.2-1.sql | 2 ++ .../sql/downgrades/citus--13.2-1--13.1-1.sql | 2 ++ src/test/regress/citus_tests/config.py | 2 +- src/test/regress/expected/multi_extension.out | 22 ++++++++++++++++--- src/test/regress/sql/multi_extension.sql | 10 +++++++++ 8 files changed, 45 insertions(+), 15 deletions(-) create mode 100644 src/backend/distributed/sql/citus--13.1-1--13.2-1.sql create mode 100644 src/backend/distributed/sql/downgrades/citus--13.2-1--13.1-1.sql diff --git a/configure b/configure index 4cdb73c1b..8deed181e 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Citus 13.1devel. +# Generated by GNU Autoconf 2.69 for Citus 13.2devel. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -579,8 +579,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Citus' PACKAGE_TARNAME='citus' -PACKAGE_VERSION='13.1devel' -PACKAGE_STRING='Citus 13.1devel' +PACKAGE_VERSION='13.2devel' +PACKAGE_STRING='Citus 13.2devel' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1262,7 +1262,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Citus 13.1devel to adapt to many kinds of systems. +\`configure' configures Citus 13.2devel to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1324,7 +1324,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Citus 13.1devel:";; + short | recursive ) echo "Configuration of Citus 13.2devel:";; esac cat <<\_ACEOF @@ -1429,7 +1429,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Citus configure 13.1devel +Citus configure 13.2devel generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1912,7 +1912,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Citus $as_me 13.1devel, which was +It was created by Citus $as_me 13.2devel, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -5393,7 +5393,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Citus $as_me 13.1devel, which was +This file was extended by Citus $as_me 13.2devel, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5455,7 +5455,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Citus config.status 13.1devel +Citus config.status 13.2devel configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 53127894c..137323c1a 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ # everyone needing autoconf installed, the resulting files are checked # into the SCM. -AC_INIT([Citus], [13.1devel]) +AC_INIT([Citus], [13.2devel]) AC_COPYRIGHT([Copyright (c) Citus Data, Inc.]) # we'll need sed and awk for some of the version commands diff --git a/src/backend/distributed/citus.control b/src/backend/distributed/citus.control index ba1c3a81d..3dfaf3c38 100644 --- a/src/backend/distributed/citus.control +++ b/src/backend/distributed/citus.control @@ -1,6 +1,6 @@ # Citus extension comment = 'Citus distributed database' -default_version = '13.1-1' +default_version = '13.2-1' module_pathname = '$libdir/citus' relocatable = false schema = pg_catalog diff --git a/src/backend/distributed/sql/citus--13.1-1--13.2-1.sql b/src/backend/distributed/sql/citus--13.1-1--13.2-1.sql new file mode 100644 index 000000000..0373d3c40 --- /dev/null +++ b/src/backend/distributed/sql/citus--13.1-1--13.2-1.sql @@ -0,0 +1,2 @@ +-- citus--13.1-1--13.2-1 +-- bump version to 13.2-1 diff --git a/src/backend/distributed/sql/downgrades/citus--13.2-1--13.1-1.sql b/src/backend/distributed/sql/downgrades/citus--13.2-1--13.1-1.sql new file mode 100644 index 000000000..6f4ecd1ef --- /dev/null +++ b/src/backend/distributed/sql/downgrades/citus--13.2-1--13.1-1.sql @@ -0,0 +1,2 @@ +-- citus--13.2-1--13.1-1 +-- downgrade version to 13.1-1 diff --git a/src/test/regress/citus_tests/config.py b/src/test/regress/citus_tests/config.py index 8c8786a06..436163ff1 100644 --- a/src/test/regress/citus_tests/config.py +++ b/src/test/regress/citus_tests/config.py @@ -43,7 +43,7 @@ CITUS_ARBITRARY_TEST_DIR = "./tmp_citus_test" MASTER = "master" # This should be updated when citus version changes -MASTER_VERSION = "13.1" +MASTER_VERSION = "13.2" HOME = expanduser("~") diff --git a/src/test/regress/expected/multi_extension.out b/src/test/regress/expected/multi_extension.out index 0dbe58913..4e8e927f4 100644 --- a/src/test/regress/expected/multi_extension.out +++ b/src/test/regress/expected/multi_extension.out @@ -1489,12 +1489,28 @@ SELECT * FROM multi_extension.print_extension_changes(); | view citus_stat_counters (33 rows) +-- Test downgrade to 13.1-1 from 13.2-1 +ALTER EXTENSION citus UPDATE TO '13.2-1'; +ALTER EXTENSION citus UPDATE TO '13.1-1'; +-- Should be empty result since upgrade+downgrade should be a no-op +SELECT * FROM multi_extension.print_extension_changes(); + previous_object | current_object +--------------------------------------------------------------------- +(0 rows) + +-- Snapshot of state at 13.2-1 +ALTER EXTENSION citus UPDATE TO '13.2-1'; +SELECT * FROM multi_extension.print_extension_changes(); + previous_object | current_object +--------------------------------------------------------------------- +(0 rows) + DROP TABLE multi_extension.prev_objects, multi_extension.extension_diff; -- show running version SHOW citus.version; citus.version --------------------------------------------------------------------- - 13.1devel + 13.2devel (1 row) -- ensure no unexpected objects were created outside pg_catalog @@ -1529,7 +1545,7 @@ DROP EXTENSION citus; DROP EXTENSION citus_columnar; CREATE EXTENSION citus VERSION '8.0-1'; ERROR: specified version incompatible with loaded Citus library -DETAIL: Loaded library requires 13.1, but 8.0-1 was specified. +DETAIL: Loaded library requires 13.2, but 8.0-1 was specified. HINT: If a newer library is present, restart the database and try the command again. -- Test non-distributed queries work even in version mismatch SET citus.enable_version_checks TO 'false'; @@ -1574,7 +1590,7 @@ ORDER BY 1; -- We should not distribute table in version mistmatch SELECT create_distributed_table('version_mismatch_table', 'column1'); ERROR: loaded Citus library version differs from installed extension version -DETAIL: Loaded library requires 13.1, but the installed extension version is 8.1-1. +DETAIL: Loaded library requires 13.2, but the installed extension version is 8.1-1. HINT: Run ALTER EXTENSION citus UPDATE and try again. -- This function will cause fail in next ALTER EXTENSION CREATE OR REPLACE FUNCTION pg_catalog.relation_is_a_known_shard(regclass) diff --git a/src/test/regress/sql/multi_extension.sql b/src/test/regress/sql/multi_extension.sql index eee715332..f2779d65e 100644 --- a/src/test/regress/sql/multi_extension.sql +++ b/src/test/regress/sql/multi_extension.sql @@ -671,6 +671,16 @@ SELECT * FROM multi_extension.print_extension_changes(); ALTER EXTENSION citus UPDATE TO '13.1-1'; SELECT * FROM multi_extension.print_extension_changes(); +-- Test downgrade to 13.1-1 from 13.2-1 +ALTER EXTENSION citus UPDATE TO '13.2-1'; +ALTER EXTENSION citus UPDATE TO '13.1-1'; +-- Should be empty result since upgrade+downgrade should be a no-op +SELECT * FROM multi_extension.print_extension_changes(); + +-- Snapshot of state at 13.2-1 +ALTER EXTENSION citus UPDATE TO '13.2-1'; +SELECT * FROM multi_extension.print_extension_changes(); + DROP TABLE multi_extension.prev_objects, multi_extension.extension_diff; -- show running version