You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudberry.apache.org by re...@apache.org on 2026/03/16 09:32:43 UTC
(cloudberry) branch REL_2_STABLE updated (e42fcdd4887 -> 49833d6ea46)
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a change to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
from e42fcdd4887 Suppress DISTRIBUTED BY notices in bfv_joins test (#1612)
new 59678645105 Fix trim_array() for zero-dimensional array argument.
new 34f970ab120 Fix incorrect tests for SRFs in relation_can_be_sorted_early().
new 89690e41d26 Clarify DROP EXTENSION docs regarding explicitly dependent routines
new 029421f3eaa Fix assorted doc typos
new 7e30f9d1500 Add proper regression test for the recent SRFs-in-pathkeys problem.
new 5bee95685be postgres_fdw: Disable batch insertion when there are WCO constraints.
new b80b084ad45 Fix non-bulletproof ScalarArrayOpExpr code for extended statistics.
new b21886b0cd6 Fix handling of bare boolean expressions in mcv_get_match_bitmap.
new 0d3b0d87f59 Partially undo commit 94da73281.
new 4175410d6f2 First-draft release notes for 14.5.
new 43078de8744 Release notes for 14.5, 13.8, 12.12, 11.17, 10.22.
new 49833d6ea46 Last-minute updates for release notes.
The 12 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
contrib/postgres_fdw/expected/postgres_fdw.out | 44 +
contrib/postgres_fdw/postgres_fdw.c | 6 +-
contrib/postgres_fdw/sql/postgres_fdw.sql | 16 +
doc/src/sgml/brin.sgml | 2 +-
doc/src/sgml/ref/drop_extension.sgml | 7 +-
doc/src/sgml/release-14.sgml | 936 +++++++++++++++++++++
src/backend/nodes/nodeFuncs.c | 6 +
src/backend/optimizer/path/equivclass.c | 4 +-
src/backend/optimizer/util/tlist.c | 11 +
src/backend/statistics/extended_stats.c | 11 +-
src/backend/statistics/mcv.c | 61 +-
src/backend/utils/adt/arrayfuncs.c | 9 +-
src/include/optimizer/optimizer.h | 5 -
src/test/regress/expected/arrays.out | 2 +
src/test/regress/expected/incremental_sort.out | 12 -
.../expected/incremental_sort_optimizer.out | 14 -
src/test/regress/expected/select_parallel.out | 27 +
src/test/regress/expected/stats_ext.out | 41 +-
src/test/regress/expected/stats_ext_optimizer.out | 41 +-
src/test/regress/sql/arrays.sql | 1 +
src/test/regress/sql/incremental_sort.sql | 2 -
src/test/regress/sql/select_parallel.sql | 6 +
src/test/regress/sql/stats_ext.sql | 31 +-
23 files changed, 1201 insertions(+), 94 deletions(-)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 08/12: Fix handling of bare boolean expressions in mcv_get_match_bitmap.
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit b21886b0cd660b9fbf2e1f1f04a9b13b1580e652
Author: Tom Lane <tg...@sss.pgh.pa.us>
AuthorDate: Fri Aug 5 15:00:03 2022 -0400
Fix handling of bare boolean expressions in mcv_get_match_bitmap.
Since v14, the extended stats machinery will try to estimate for
otherwise-unsupported boolean expressions if they match an expression
available from an extended stats object. mcv.c did not get the memo
about this, and would spit up with "unknown clause type". Fortunately
the case is easy to handle, since we can expect the expression yields
boolean.
While here, replace some not-terribly-on-point assertions with
simpler runtime tests for lookup failure. That seems appropriate
so that we get an elog not a crash if we somehow get to the new
it-should-be-a-bool-expression code with a subexpression that
doesn't match any stats column.
Per report from Danny Shemesh. Thanks to Justin Pryzby for
preliminary investigation.
Discussion: https://postgr.es/m/CAFZC=QqD6=27wQPOW1pbRa98KPyuyn+7cL_Ay_Ck-roZV84vHg@mail.gmail.com
---
src/backend/statistics/mcv.c | 51 +++++++++++++++--------
src/test/regress/expected/stats_ext.out | 19 ++++++---
src/test/regress/expected/stats_ext_optimizer.out | 23 ++++++----
src/test/regress/sql/stats_ext.sql | 17 +++++---
4 files changed, 76 insertions(+), 34 deletions(-)
diff --git a/src/backend/statistics/mcv.c b/src/backend/statistics/mcv.c
index 9cbd093fce7..50c65c3fdeb 100644
--- a/src/backend/statistics/mcv.c
+++ b/src/backend/statistics/mcv.c
@@ -1531,13 +1531,13 @@ pg_mcv_list_send(PG_FUNCTION_ARGS)
/*
* match the attribute/expression to a dimension of the statistic
*
- * Match the attribute/expression to statistics dimension. Optionally
- * determine the collation.
+ * Returns the zero-based index of the matching statistics dimension.
+ * Optionally determines the collation.
*/
static int
mcv_match_expression(Node *expr, Bitmapset *keys, List *exprs, Oid *collid)
{
- int idx = -1;
+ int idx;
if (IsA(expr, Var))
{
@@ -1549,20 +1549,19 @@ mcv_match_expression(Node *expr, Bitmapset *keys, List *exprs, Oid *collid)
idx = bms_member_index(keys, var->varattno);
- /* make sure the index is valid */
- Assert((idx >= 0) && (idx <= bms_num_members(keys)));
+ if (idx < 0)
+ elog(ERROR, "variable not found in statistics object");
}
else
{
+ /* expression - lookup in stats expressions */
ListCell *lc;
- /* expressions are stored after the simple columns */
- idx = bms_num_members(keys);
-
if (collid)
*collid = exprCollation(expr);
- /* expression - lookup in stats expressions */
+ /* expressions are stored after the simple columns */
+ idx = bms_num_members(keys);
foreach(lc, exprs)
{
Node *stat_expr = (Node *) lfirst(lc);
@@ -1573,13 +1572,10 @@ mcv_match_expression(Node *expr, Bitmapset *keys, List *exprs, Oid *collid)
idx++;
}
- /* make sure the index is valid */
- Assert((idx >= bms_num_members(keys)) &&
- (idx <= bms_num_members(keys) + list_length(exprs)));
+ if (lc == NULL)
+ elog(ERROR, "expression not found in statistics object");
}
- Assert((idx >= 0) && (idx < bms_num_members(keys) + list_length(exprs)));
-
return idx;
}
@@ -1659,8 +1655,6 @@ mcv_get_match_bitmap(PlannerInfo *root, List *clauses,
/* match the attribute/expression to a dimension of the statistic */
idx = mcv_match_expression(clause_expr, keys, exprs, &collid);
- Assert((idx >= 0) && (idx < bms_num_members(keys) + list_length(exprs)));
-
/*
* Walk through the MCV items and evaluate the current clause. We
* can skip items that were already ruled out, and terminate if
@@ -1944,7 +1938,30 @@ mcv_get_match_bitmap(PlannerInfo *root, List *clauses,
}
}
else
- elog(ERROR, "unknown clause type: %d", clause->type);
+ {
+ /* Otherwise, it must be a bare boolean-returning expression */
+ int idx;
+
+ /* match the expression to a dimension of the statistic */
+ idx = mcv_match_expression(clause, keys, exprs, NULL);
+
+ /*
+ * Walk through the MCV items and evaluate the current clause. We
+ * can skip items that were already ruled out, and terminate if
+ * there are no remaining MCV items that might possibly match.
+ */
+ for (i = 0; i < mcvlist->nitems; i++)
+ {
+ bool match;
+ MCVItem *item = &mcvlist->items[i];
+
+ /* "match" just means it's bool TRUE */
+ match = !item->isnull[idx] && DatumGetBool(item->values[idx]);
+
+ /* now, update the match bitmap, depending on OR/AND type */
+ matches[i] = RESULT_MERGE(matches[i], is_or, match);
+ }
+ }
}
return matches;
diff --git a/src/test/regress/expected/stats_ext.out b/src/test/regress/expected/stats_ext.out
index 60c7915eff0..ba2914d3c7a 100644
--- a/src/test/regress/expected/stats_ext.out
+++ b/src/test/regress/expected/stats_ext.out
@@ -270,14 +270,23 @@ SELECT stxkind FROM pg_statistic_ext WHERE stxname = 'ab1_exprstat_3';
CREATE STATISTICS ab1_exprstat_4 ON date_trunc('day', d) FROM ab1;
-- date_trunc on timestamp is immutable
CREATE STATISTICS ab1_exprstat_5 ON date_trunc('day', c) FROM ab1;
+-- check use of a boolean-returning expression
+CREATE STATISTICS ab1_exprstat_6 ON
+ (case a when 1 then true else false end), b FROM ab1;
-- insert some data and run analyze, to test that these cases build properly
INSERT INTO ab1
-SELECT
- generate_series(1,10),
- generate_series(1,10),
- generate_series('2020-10-01'::timestamp, '2020-10-10'::timestamp, interval '1 day'),
- generate_series('2020-10-01'::timestamptz, '2020-10-10'::timestamptz, interval '1 day');
+SELECT x / 10, x / 3,
+ '2020-10-01'::timestamp + x * interval '1 day',
+ '2020-10-01'::timestamptz + x * interval '1 day'
+FROM generate_series(1, 100) x;
ANALYZE ab1;
+-- apply some stats
+SELECT * FROM check_estimated_rows('SELECT * FROM ab1 WHERE (case a when 1 then true else false end) AND b=2');
+ estimated | actual
+-----------+--------
+ 1 | 0
+(1 row)
+
DROP TABLE ab1;
-- Verify supported object types for extended statistics
CREATE schema tststats;
diff --git a/src/test/regress/expected/stats_ext_optimizer.out b/src/test/regress/expected/stats_ext_optimizer.out
index 9ad26109b59..655f7ab1147 100644
--- a/src/test/regress/expected/stats_ext_optimizer.out
+++ b/src/test/regress/expected/stats_ext_optimizer.out
@@ -278,14 +278,23 @@ SELECT stxkind FROM pg_statistic_ext WHERE stxname = 'ab1_exprstat_3';
CREATE STATISTICS ab1_exprstat_4 ON date_trunc('day', d) FROM ab1;
-- date_trunc on timestamp is immutable
CREATE STATISTICS ab1_exprstat_5 ON date_trunc('day', c) FROM ab1;
+-- check use of a boolean-returning expression
+CREATE STATISTICS ab1_exprstat_6 ON
+ (case a when 1 then true else false end), b FROM ab1;
-- insert some data and run analyze, to test that these cases build properly
INSERT INTO ab1
-SELECT
- generate_series(1,10),
- generate_series(1,10),
- generate_series('2020-10-01'::timestamp, '2020-10-10'::timestamp, interval '1 day'),
- generate_series('2020-10-01'::timestamptz, '2020-10-10'::timestamptz, interval '1 day');
+SELECT x / 10, x / 3,
+ '2020-10-01'::timestamp + x * interval '1 day',
+ '2020-10-01'::timestamptz + x * interval '1 day'
+FROM generate_series(1, 100) x;
ANALYZE ab1;
+-- apply some stats
+SELECT * FROM check_estimated_rows('SELECT * FROM ab1 WHERE (case a when 1 then true else false end) AND b=2');
+ estimated | actual
+-----------+--------
+ 3 | 0
+(1 row)
+
DROP TABLE ab1;
-- Verify supported object types for extended statistics
CREATE schema tststats;
@@ -2075,7 +2084,7 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY
SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[4,5]) AND 4 = ANY(ia)');
estimated | actual
-----------+--------
- 4 | 50
+ 72 | 50
(1 row)
-- create statistics
@@ -2228,7 +2237,7 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY
SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[4,5]) AND 4 = ANY(ia)');
estimated | actual
-----------+--------
- 4 | 50
+ 72 | 50
(1 row)
-- check change of unrelated column type does not reset the MCV statistics
diff --git a/src/test/regress/sql/stats_ext.sql b/src/test/regress/sql/stats_ext.sql
index abd1d0b8608..c2a91675045 100644
--- a/src/test/regress/sql/stats_ext.sql
+++ b/src/test/regress/sql/stats_ext.sql
@@ -176,14 +176,21 @@ CREATE STATISTICS ab1_exprstat_4 ON date_trunc('day', d) FROM ab1;
-- date_trunc on timestamp is immutable
CREATE STATISTICS ab1_exprstat_5 ON date_trunc('day', c) FROM ab1;
+-- check use of a boolean-returning expression
+CREATE STATISTICS ab1_exprstat_6 ON
+ (case a when 1 then true else false end), b FROM ab1;
+
-- insert some data and run analyze, to test that these cases build properly
INSERT INTO ab1
-SELECT
- generate_series(1,10),
- generate_series(1,10),
- generate_series('2020-10-01'::timestamp, '2020-10-10'::timestamp, interval '1 day'),
- generate_series('2020-10-01'::timestamptz, '2020-10-10'::timestamptz, interval '1 day');
+SELECT x / 10, x / 3,
+ '2020-10-01'::timestamp + x * interval '1 day',
+ '2020-10-01'::timestamptz + x * interval '1 day'
+FROM generate_series(1, 100) x;
ANALYZE ab1;
+
+-- apply some stats
+SELECT * FROM check_estimated_rows('SELECT * FROM ab1 WHERE (case a when 1 then true else false end) AND b=2');
+
DROP TABLE ab1;
-- Verify supported object types for extended statistics
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 02/12: Fix incorrect tests for SRFs in relation_can_be_sorted_early().
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 34f970ab1206bbea71db1a5a178667655c76941a
Author: Tom Lane <tg...@sss.pgh.pa.us>
AuthorDate: Wed Aug 3 17:33:42 2022 -0400
Fix incorrect tests for SRFs in relation_can_be_sorted_early().
Commit fac1b470a thought we could check for set-returning functions
by testing only the top-level node in an expression tree. This is
wrong in itself, and to make matters worse it encouraged others
to make the same mistake, by exporting tlist.c's special-purpose
IS_SRF_CALL() as a widely-visible macro. I can't find any evidence
that anyone's taken the bait, but it was only a matter of time.
Use expression_returns_set() instead, and stuff the IS_SRF_CALL()
genie back in its bottle, this time with a warning label. I also
added a couple of cross-reference comments.
After a fair amount of fooling around, I've despaired of making
a robust test case that exposes the bug reliably, so no test case
here. (Note that the test case added by fac1b470a is itself
broken, in that it doesn't notice if you remove the code change.
The repro given by the bug submitter currently doesn't fail either
in v15 or HEAD, though I suspect that may indicate an unrelated bug.)
Per bug #17564 from Martijn van Oosterhout. Back-patch to v13,
as the faulty patch was.
Discussion: https://postgr.es/m/17564-c7472c2f90ef2da3@postgresql.org
---
src/backend/nodes/nodeFuncs.c | 6 ++++++
src/backend/optimizer/path/equivclass.c | 4 ++--
src/backend/optimizer/util/tlist.c | 11 +++++++++++
src/include/optimizer/optimizer.h | 5 -----
4 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c
index 8e2b9230cb3..6c45d349524 100644
--- a/src/backend/nodes/nodeFuncs.c
+++ b/src/backend/nodes/nodeFuncs.c
@@ -754,6 +754,12 @@ expression_returns_set_walker(Node *node, void *context)
/* else fall through to check args */
}
+ /*
+ * If you add any more cases that return sets, also fix
+ * expression_returns_set_rows() in clauses.c and IS_SRF_CALL() in
+ * tlist.c.
+ */
+
/* Avoid recursion for some cases that parser checks not to return a set */
if (IsA(node, Aggref))
return false;
diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c
index 547b2550917..6a941c662c7 100644
--- a/src/backend/optimizer/path/equivclass.c
+++ b/src/backend/optimizer/path/equivclass.c
@@ -1005,7 +1005,7 @@ relation_can_be_sorted_early(PlannerInfo *root, RelOptInfo *rel,
* one are effectively checking properties of targetexpr, so there's
* no point in asking whether some other EC member would be better.)
*/
- if (IS_SRF_CALL((Node *) em->em_expr))
+ if (expression_returns_set((Node *) em->em_expr))
continue;
/*
@@ -1033,7 +1033,7 @@ relation_can_be_sorted_early(PlannerInfo *root, RelOptInfo *rel,
* member in this case; since SRFs can't appear in WHERE, they cannot
* belong to multi-member ECs.)
*/
- if (IS_SRF_CALL((Node *) em->em_expr))
+ if (expression_returns_set((Node *) em->em_expr))
return false;
return true;
diff --git a/src/backend/optimizer/util/tlist.c b/src/backend/optimizer/util/tlist.c
index 9d0f3274dbe..bb16a8d2c38 100644
--- a/src/backend/optimizer/util/tlist.c
+++ b/src/backend/optimizer/util/tlist.c
@@ -32,6 +32,17 @@ typedef struct maxSortGroupRef_context
static
bool maxSortGroupRef_walker(Node *node, maxSortGroupRef_context *cxt);
+/*
+ * Test if an expression node represents a SRF call. Beware multiple eval!
+ *
+ * Please note that this is only meant for use in split_pathtarget_at_srfs();
+ * if you use it anywhere else, your code is almost certainly wrong for SRFs
+ * nested within expressions. Use expression_returns_set() instead.
+ */
+#define IS_SRF_CALL(node) \
+ ((IsA(node, FuncExpr) && ((FuncExpr *) (node))->funcretset) || \
+ (IsA(node, OpExpr) && ((OpExpr *) (node))->opretset))
+
/*
* Data structures for split_pathtarget_at_srfs(). To preserve the identity
* of sortgroupref items even if they are textually equal(), what we track is
diff --git a/src/include/optimizer/optimizer.h b/src/include/optimizer/optimizer.h
index f8400206288..c2553891186 100644
--- a/src/include/optimizer/optimizer.h
+++ b/src/include/optimizer/optimizer.h
@@ -25,11 +25,6 @@
#include "nodes/parsenodes.h"
#include "nodes/plannodes.h"
-/* Test if an expression node represents a SRF call. Beware multiple eval! */
-#define IS_SRF_CALL(node) \
- ((IsA(node, FuncExpr) && ((FuncExpr *) (node))->funcretset) || \
- (IsA(node, OpExpr) && ((OpExpr *) (node))->opretset))
-
/*
* We don't want to include nodes/pathnodes.h here, because non-planner
* code should generally treat PlannerInfo as an opaque typedef.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 09/12: Partially undo commit 94da73281.
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 0d3b0d87f5914184ff699fa9d5587b2eba2d07f2
Author: Tom Lane <tg...@sss.pgh.pa.us>
AuthorDate: Fri Aug 5 15:57:46 2022 -0400
Partially undo commit 94da73281.
On closer inspection, mcv.c isn't as broken for ScalarArrayOpExpr
as I thought. The Var-on-right issue is real enough, but actually
it does cope fine with a NULL array constant --- I was misled by
an XXX comment suggesting it didn't. Undo that part of the code
change, and replace the XXX comment with something less misleading.
---
src/backend/statistics/extended_stats.c | 7 +++----
src/backend/statistics/mcv.c | 25 ++++++++++++++++---------
2 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/src/backend/statistics/extended_stats.c b/src/backend/statistics/extended_stats.c
index d91d80357ff..134a047f8df 100644
--- a/src/backend/statistics/extended_stats.c
+++ b/src/backend/statistics/extended_stats.c
@@ -1454,7 +1454,6 @@ statext_is_compatible_clause_internal(PlannerInfo *root, Node *clause,
RangeTblEntry *rte = root->simple_rte_array[relid];
ScalarArrayOpExpr *expr = (ScalarArrayOpExpr *) clause;
Node *clause_expr;
- Const *cst;
bool expronleft;
/* Only expressions with two arguments are considered compatible. */
@@ -1462,11 +1461,11 @@ statext_is_compatible_clause_internal(PlannerInfo *root, Node *clause,
return false;
/* Check if the expression has the right shape (one Var, one Const) */
- if (!examine_opclause_args(expr->args, &clause_expr, &cst, &expronleft))
+ if (!examine_opclause_args(expr->args, &clause_expr, NULL, &expronleft))
return false;
- /* We only support Var on left and non-null array constants */
- if (!expronleft || cst->constisnull)
+ /* We only support Var on left, Const on right */
+ if (!expronleft)
return false;
/*
diff --git a/src/backend/statistics/mcv.c b/src/backend/statistics/mcv.c
index 50c65c3fdeb..01837758534 100644
--- a/src/backend/statistics/mcv.c
+++ b/src/backend/statistics/mcv.c
@@ -1740,17 +1740,24 @@ mcv_get_match_bitmap(PlannerInfo *root, List *clauses,
if (!examine_opclause_args(expr->args, &clause_expr, &cst, &expronleft))
elog(ERROR, "incompatible clause");
- /* We expect Var on left and non-null constant on right */
- if (!expronleft || cst->constisnull)
+ /* We expect Var on left */
+ if (!expronleft)
elog(ERROR, "incompatible clause");
- arrayval = DatumGetArrayTypeP(cst->constvalue);
- get_typlenbyvalalign(ARR_ELEMTYPE(arrayval),
- &elmlen, &elmbyval, &elmalign);
- deconstruct_array(arrayval,
- ARR_ELEMTYPE(arrayval),
- elmlen, elmbyval, elmalign,
- &elem_values, &elem_nulls, &num_elems);
+ /*
+ * Deconstruct the array constant, unless it's NULL (we'll cover
+ * that case below)
+ */
+ if (!cst->constisnull)
+ {
+ arrayval = DatumGetArrayTypeP(cst->constvalue);
+ get_typlenbyvalalign(ARR_ELEMTYPE(arrayval),
+ &elmlen, &elmbyval, &elmalign);
+ deconstruct_array(arrayval,
+ ARR_ELEMTYPE(arrayval),
+ elmlen, elmbyval, elmalign,
+ &elem_values, &elem_nulls, &num_elems);
+ }
/* match the attribute/expression to a dimension of the statistic */
idx = mcv_match_expression(clause_expr, keys, exprs, &collid);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 04/12: Fix assorted doc typos
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 029421f3eaa2644db08cefd5e90845a01a0db2ff
Author: John Naylor <jo...@postgresql.org>
AuthorDate: Thu Aug 4 15:59:32 2022 +0700
Fix assorted doc typos
Erik Rijkers and Justin Pryzby
Backpatch to v14
Discussion: https://www.postgresql.org/message-id/b79bfeff-d0e3-29a3-2576-0e325848dede%40xs4all.nl
---
doc/src/sgml/brin.sgml | 2 +-
doc/src/sgml/ref/drop_extension.sgml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/brin.sgml b/doc/src/sgml/brin.sgml
index 4ee8908b65a..71697155d7c 100644
--- a/doc/src/sgml/brin.sgml
+++ b/doc/src/sgml/brin.sgml
@@ -75,7 +75,7 @@
summarized will cause the summary information to be updated with data
from the new tuples.
When a new page is created that does not fall within the last
- summarized range, the range that the new page belongs into
+ summarized range, the range that the new page belongs to
does not automatically acquire a summary tuple;
those tuples remain unsummarized until a summarization run is
invoked later, creating the initial summary for that range.
diff --git a/doc/src/sgml/ref/drop_extension.sgml b/doc/src/sgml/ref/drop_extension.sgml
index 4ea20131c79..dcc52c2ced0 100644
--- a/doc/src/sgml/ref/drop_extension.sgml
+++ b/doc/src/sgml/ref/drop_extension.sgml
@@ -81,8 +81,8 @@ DROP EXTENSION [ IF EXISTS ] <replaceable class="parameter">name</replaceable> [
<listitem>
<para>
This option prevents the specified extensions from being dropped
- if there exists non-extension-member objects that depends on any
- the extensions. This is the default.
+ if there exist non-extension-member objects that depend on any
+ of the extensions. This is the default.
</para>
</listitem>
</varlistentry>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 05/12: Add proper regression test for the recent SRFs-in-pathkeys problem.
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 7e30f9d15004c72a78c211c5a8c12fe196dc2537
Author: Tom Lane <tg...@sss.pgh.pa.us>
AuthorDate: Thu Aug 4 11:11:22 2022 -0400
Add proper regression test for the recent SRFs-in-pathkeys problem.
Remove the test case added by commit fac1b470a, which never actually
worked to expose the problem it claimed to test. Replace it with
a case that does expose the problem, and also covers the SRF-not-
at-the-top deficiency repaired in 1aa8dad41.
Richard Guo, with some editorialization by me
Discussion: https://postgr.es/m/17564-c7472c2f90ef2da3@postgresql.org
---
src/test/regress/expected/incremental_sort.out | 12 ----------
.../expected/incremental_sort_optimizer.out | 14 -----------
src/test/regress/expected/select_parallel.out | 27 ++++++++++++++++++++++
src/test/regress/sql/incremental_sort.sql | 2 --
src/test/regress/sql/select_parallel.sql | 6 +++++
5 files changed, 33 insertions(+), 28 deletions(-)
diff --git a/src/test/regress/expected/incremental_sort.out b/src/test/regress/expected/incremental_sort.out
index c5f52e1e97f..8a25141d8f5 100644
--- a/src/test/regress/expected/incremental_sort.out
+++ b/src/test/regress/expected/incremental_sort.out
@@ -1804,15 +1804,3 @@ order by 1, 2;
-> Function Scan on generate_series
(7 rows)
--- Disallow pushing down sort when pathkey is an SRF.
-explain (costs off) select unique1 from tenk1 order by unnest('{1,2}'::int[]);
- QUERY PLAN
--------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3)
- Merge Key: (unnest('{1,2}'::anyarray))
- -> Sort
- Sort Key: (unnest('{1,2}'::anyarray))
- -> ProjectSet
- -> Index Only Scan using tenk1_unique1 on tenk1
-(6 rows)
-
diff --git a/src/test/regress/expected/incremental_sort_optimizer.out b/src/test/regress/expected/incremental_sort_optimizer.out
index f5fd24f81ba..0648bb03799 100644
--- a/src/test/regress/expected/incremental_sort_optimizer.out
+++ b/src/test/regress/expected/incremental_sort_optimizer.out
@@ -1658,17 +1658,3 @@ order by 1, 2;
Optimizer: Postgres query optimizer
(8 rows)
--- Disallow pushing down sort when pathkey is an SRF.
-explain (costs off) select unique1 from tenk1 order by unnest('{1,2}'::int[]);
- QUERY PLAN
------------------------------------------------------
- Result
- -> Gather Motion 3:1 (slice1; segments: 3)
- Merge Key: (unnest('{1,2}'::anyarray))
- -> Sort
- Sort Key: (unnest('{1,2}'::anyarray))
- -> ProjectSet
- -> Seq Scan on tenk1
- Optimizer: Pivotal Optimizer (GPORCA)
-(8 rows)
-
diff --git a/src/test/regress/expected/select_parallel.out b/src/test/regress/expected/select_parallel.out
index 4de01f4f632..db579197c3a 100644
--- a/src/test/regress/expected/select_parallel.out
+++ b/src/test/regress/expected/select_parallel.out
@@ -1217,6 +1217,33 @@ SELECT generate_series(1, two), array(select generate_series(1, two))
Optimizer: Postgres query optimizer
(18 rows)
+-- must disallow pushing sort below gather when pathkey contains an SRF
+EXPLAIN (VERBOSE, COSTS OFF)
+SELECT unnest(ARRAY[]::integer[]) + 1 AS pathkey
+ FROM tenk1 t1 JOIN tenk1 t2 ON TRUE
+ ORDER BY pathkey;
+ QUERY PLAN
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 6:1 (slice1; segments: 6)
+ Output: (((unnest('{}'::integer[])) + 1))
+ Merge Key: (((unnest('{}'::integer[])) + 1))
+ -> Sort
+ Output: (((unnest('{}'::integer[])) + 1))
+ Sort Key: (((unnest('{}'::integer[])) + 1))
+ -> Result
+ Output: ((unnest('{}'::integer[])) + 1)
+ -> ProjectSet
+ Output: unnest('{}'::integer[])
+ -> Nested Loop
+ -> Parallel Seq Scan on public.tenk1 t1
+ Output: t1.unique1, t1.unique2, t1.two, t1.four, t1.ten, t1.twenty, t1.hundred, t1.thousand, t1.twothousand, t1.fivethous, t1.tenthous, t1.odd, t1.even, t1.stringu1, t1.stringu2, t1.string4
+ -> Materialize
+ -> Broadcast Motion 3:6 (slice2; segments: 3)
+ -> Seq Scan on public.tenk1 t2
+ Settings: enable_parallel = 'on', min_parallel_table_scan_size = '0', optimizer = 'off', parallel_setup_cost = '0', parallel_tuple_cost = '0'
+ Optimizer: Postgres query optimizer
+(18 rows)
+
-- test passing expanded-value representations to workers
CREATE FUNCTION make_some_array(int,int) returns int[] as
$$declare x int[];
diff --git a/src/test/regress/sql/incremental_sort.sql b/src/test/regress/sql/incremental_sort.sql
index afd1dab2045..648eced7e14 100644
--- a/src/test/regress/sql/incremental_sort.sql
+++ b/src/test/regress/sql/incremental_sort.sql
@@ -294,5 +294,3 @@ from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub;
explain (costs off) select sub.unique1, stringu1 || random()::text
from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub
order by 1, 2;
--- Disallow pushing down sort when pathkey is an SRF.
-explain (costs off) select unique1 from tenk1 order by unnest('{1,2}'::int[]);
diff --git a/src/test/regress/sql/select_parallel.sql b/src/test/regress/sql/select_parallel.sql
index 846066fad05..4a22a001ef9 100644
--- a/src/test/regress/sql/select_parallel.sql
+++ b/src/test/regress/sql/select_parallel.sql
@@ -443,6 +443,12 @@ EXPLAIN (VERBOSE, COSTS OFF)
SELECT generate_series(1, two), array(select generate_series(1, two))
FROM tenk1 ORDER BY tenthous;
+-- must disallow pushing sort below gather when pathkey contains an SRF
+EXPLAIN (VERBOSE, COSTS OFF)
+SELECT unnest(ARRAY[]::integer[]) + 1 AS pathkey
+ FROM tenk1 t1 JOIN tenk1 t2 ON TRUE
+ ORDER BY pathkey;
+
-- test passing expanded-value representations to workers
CREATE FUNCTION make_some_array(int,int) returns int[] as
$$declare x int[];
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 07/12: Fix non-bulletproof ScalarArrayOpExpr code for extended statistics.
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit b80b084ad455691d176a9b1d601109091ed552c6
Author: Tom Lane <tg...@sss.pgh.pa.us>
AuthorDate: Fri Aug 5 13:58:37 2022 -0400
Fix non-bulletproof ScalarArrayOpExpr code for extended statistics.
statext_is_compatible_clause_internal() checked that the arguments
of a ScalarArrayOpExpr are one Var and one Const, but it would allow
cases where the Const was on the left. Subsequent uses of the clause
are not expecting that and would suffer assertion failures or core
dumps. mcv.c also had not bothered to cope with the case of a NULL
array constant, which seems really unacceptably sloppy of somebody.
(Although our tools failed us there too, since AFAIK neither Coverity
nor any compiler warned of the obvious use-of-uninitialized-variable
condition.) It seems best to handle that by having
statext_is_compatible_clause_internal() reject it.
Noted while fixing bug #17570. Back-patch to v13 where the
extended stats code grew some awareness of ScalarArrayOpExpr.
---
src/backend/statistics/extended_stats.c | 12 +++++++++---
src/backend/statistics/mcv.c | 23 ++++++++++-------------
src/test/regress/expected/stats_ext.out | 22 ++++++++++++++++++----
src/test/regress/expected/stats_ext_optimizer.out | 22 ++++++++++++++++++----
src/test/regress/sql/stats_ext.sql | 14 ++++++++++----
5 files changed, 65 insertions(+), 28 deletions(-)
diff --git a/src/backend/statistics/extended_stats.c b/src/backend/statistics/extended_stats.c
index ee1c25416bd..d91d80357ff 100644
--- a/src/backend/statistics/extended_stats.c
+++ b/src/backend/statistics/extended_stats.c
@@ -1333,8 +1333,8 @@ choose_best_statistics(List *stats, char requiredkind,
*
* (c) combinations using AND/OR/NOT
*
- * (d) ScalarArrayOpExprs of the form (Var/Expr op ANY (array)) or (Var/Expr
- * op ALL (array))
+ * (d) ScalarArrayOpExprs of the form (Var/Expr op ANY (Const)) or
+ * (Var/Expr op ALL (Const))
*
* In the future, the range of supported clauses may be expanded to more
* complex cases, for example (Var op Var).
@@ -1454,13 +1454,19 @@ statext_is_compatible_clause_internal(PlannerInfo *root, Node *clause,
RangeTblEntry *rte = root->simple_rte_array[relid];
ScalarArrayOpExpr *expr = (ScalarArrayOpExpr *) clause;
Node *clause_expr;
+ Const *cst;
+ bool expronleft;
/* Only expressions with two arguments are considered compatible. */
if (list_length(expr->args) != 2)
return false;
/* Check if the expression has the right shape (one Var, one Const) */
- if (!examine_opclause_args(expr->args, &clause_expr, NULL, NULL))
+ if (!examine_opclause_args(expr->args, &clause_expr, &cst, &expronleft))
+ return false;
+
+ /* We only support Var on left and non-null array constants */
+ if (!expronleft || cst->constisnull)
return false;
/*
diff --git a/src/backend/statistics/mcv.c b/src/backend/statistics/mcv.c
index e6a60865282..9cbd093fce7 100644
--- a/src/backend/statistics/mcv.c
+++ b/src/backend/statistics/mcv.c
@@ -1746,20 +1746,17 @@ mcv_get_match_bitmap(PlannerInfo *root, List *clauses,
if (!examine_opclause_args(expr->args, &clause_expr, &cst, &expronleft))
elog(ERROR, "incompatible clause");
- /* ScalarArrayOpExpr has the Var always on the left */
- Assert(expronleft);
+ /* We expect Var on left and non-null constant on right */
+ if (!expronleft || cst->constisnull)
+ elog(ERROR, "incompatible clause");
- /* XXX what if (cst->constisnull == NULL)? */
- if (!cst->constisnull)
- {
- arrayval = DatumGetArrayTypeP(cst->constvalue);
- get_typlenbyvalalign(ARR_ELEMTYPE(arrayval),
- &elmlen, &elmbyval, &elmalign);
- deconstruct_array(arrayval,
- ARR_ELEMTYPE(arrayval),
- elmlen, elmbyval, elmalign,
- &elem_values, &elem_nulls, &num_elems);
- }
+ arrayval = DatumGetArrayTypeP(cst->constvalue);
+ get_typlenbyvalalign(ARR_ELEMTYPE(arrayval),
+ &elmlen, &elmbyval, &elmalign);
+ deconstruct_array(arrayval,
+ ARR_ELEMTYPE(arrayval),
+ elmlen, elmbyval, elmalign,
+ &elem_values, &elem_nulls, &num_elems);
/* match the attribute/expression to a dimension of the statistic */
idx = mcv_match_expression(clause_expr, keys, exprs, &collid);
diff --git a/src/test/regress/expected/stats_ext.out b/src/test/regress/expected/stats_ext.out
index 06aff4d5bd0..60c7915eff0 100644
--- a/src/test/regress/expected/stats_ext.out
+++ b/src/test/regress/expected/stats_ext.out
@@ -1835,7 +1835,8 @@ CREATE TABLE mcv_lists (
b VARCHAR,
filler3 DATE,
c INT,
- d TEXT
+ d TEXT,
+ ia INT[]
)
WITH (autovacuum_enabled = off);
-- random data (no MCV list)
@@ -1905,8 +1906,9 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,7) = 1 A
-- 100 distinct combinations, all in the MCV list
TRUNCATE mcv_lists;
DROP STATISTICS mcv_lists_stats;
-INSERT INTO mcv_lists (a, b, c, filler1)
- SELECT mod(i,100), mod(i,50), mod(i,25), i FROM generate_series(1,5000) s(i);
+INSERT INTO mcv_lists (a, b, c, ia, filler1)
+ SELECT mod(i,100), mod(i,50), mod(i,25), array[mod(i,25)], i
+ FROM generate_series(1,5000) s(i);
ANALYZE mcv_lists;
SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1''');
estimated | actual
@@ -2046,8 +2048,14 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY
1 | 100
(1 row)
+SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[4,5]) AND 4 = ANY(ia)');
+ estimated | actual
+-----------+--------
+ 4 | 50
+(1 row)
+
-- create statistics
-CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, c FROM mcv_lists;
+CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, c, ia FROM mcv_lists;
ANALYZE mcv_lists;
SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1''');
estimated | actual
@@ -2193,6 +2201,12 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY
100 | 100
(1 row)
+SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[4,5]) AND 4 = ANY(ia)');
+ estimated | actual
+-----------+--------
+ 4 | 50
+(1 row)
+
-- check change of unrelated column type does not reset the MCV statistics
ALTER TABLE mcv_lists ALTER COLUMN d TYPE VARCHAR(64);
SELECT d.stxdmcv IS NOT NULL
diff --git a/src/test/regress/expected/stats_ext_optimizer.out b/src/test/regress/expected/stats_ext_optimizer.out
index dafbf0a28b4..9ad26109b59 100644
--- a/src/test/regress/expected/stats_ext_optimizer.out
+++ b/src/test/regress/expected/stats_ext_optimizer.out
@@ -1857,7 +1857,8 @@ CREATE TABLE mcv_lists (
b VARCHAR,
filler3 DATE,
c INT,
- d TEXT
+ d TEXT,
+ ia INT[]
)
WITH (autovacuum_enabled = off);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'filler1' as the Apache Cloudberry data distribution key for this table.
@@ -1929,8 +1930,9 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,7) = 1 A
-- 100 distinct combinations, all in the MCV list
TRUNCATE mcv_lists;
DROP STATISTICS mcv_lists_stats;
-INSERT INTO mcv_lists (a, b, c, filler1)
- SELECT mod(i,100), mod(i,50), mod(i,25), i FROM generate_series(1,5000) s(i);
+INSERT INTO mcv_lists (a, b, c, ia, filler1)
+ SELECT mod(i,100), mod(i,50), mod(i,25), array[mod(i,25)], i
+ FROM generate_series(1,5000) s(i);
ANALYZE mcv_lists;
SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1''');
estimated | actual
@@ -2070,8 +2072,14 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY
22 | 100
(1 row)
+SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[4,5]) AND 4 = ANY(ia)');
+ estimated | actual
+-----------+--------
+ 4 | 50
+(1 row)
+
-- create statistics
-CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, c FROM mcv_lists;
+CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, c, ia FROM mcv_lists;
ANALYZE mcv_lists;
SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1''');
estimated | actual
@@ -2217,6 +2225,12 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY
22 | 100
(1 row)
+SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[4,5]) AND 4 = ANY(ia)');
+ estimated | actual
+-----------+--------
+ 4 | 50
+(1 row)
+
-- check change of unrelated column type does not reset the MCV statistics
ALTER TABLE mcv_lists ALTER COLUMN d TYPE VARCHAR(64);
SELECT d.stxdmcv IS NOT NULL
diff --git a/src/test/regress/sql/stats_ext.sql b/src/test/regress/sql/stats_ext.sql
index 744bb00c161..abd1d0b8608 100644
--- a/src/test/regress/sql/stats_ext.sql
+++ b/src/test/regress/sql/stats_ext.sql
@@ -923,7 +923,8 @@ CREATE TABLE mcv_lists (
b VARCHAR,
filler3 DATE,
c INT,
- d TEXT
+ d TEXT,
+ ia INT[]
)
WITH (autovacuum_enabled = off);
@@ -972,8 +973,9 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,7) = 1 A
TRUNCATE mcv_lists;
DROP STATISTICS mcv_lists_stats;
-INSERT INTO mcv_lists (a, b, c, filler1)
- SELECT mod(i,100), mod(i,50), mod(i,25), i FROM generate_series(1,5000) s(i);
+INSERT INTO mcv_lists (a, b, c, ia, filler1)
+ SELECT mod(i,100), mod(i,50), mod(i,25), array[mod(i,25)], i
+ FROM generate_series(1,5000) s(i);
ANALYZE mcv_lists;
@@ -1023,8 +1025,10 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY
SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY[4, 5]) AND b IN (''1'', ''2'', NULL, ''3'') AND c > ANY (ARRAY[1, 2, NULL, 3])');
+SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[4,5]) AND 4 = ANY(ia)');
+
-- create statistics
-CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, c FROM mcv_lists;
+CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, c, ia FROM mcv_lists;
ANALYZE mcv_lists;
@@ -1076,6 +1080,8 @@ SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY
SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY[4, 5]) AND b IN (''1'', ''2'', NULL, ''3'') AND c > ANY (ARRAY[1, 2, NULL, 3])');
+SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[4,5]) AND 4 = ANY(ia)');
+
-- check change of unrelated column type does not reset the MCV statistics
ALTER TABLE mcv_lists ALTER COLUMN d TYPE VARCHAR(64);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 06/12: postgres_fdw: Disable batch insertion when there are WCO constraints.
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 5bee95685be6a05a108b411ebb1dca5271022fef
Author: Etsuro Fujita <ef...@postgresql.org>
AuthorDate: Fri Aug 5 17:15:03 2022 +0900
postgres_fdw: Disable batch insertion when there are WCO constraints.
When inserting a view referencing a foreign table that has WITH CHECK
OPTION constraints, in single-insert mode postgres_fdw retrieves the
data that was actually inserted on the remote side so that the WITH
CHECK OPTION constraints are enforced with the data locally, but in
batch-insert mode it cannot currently retrieve the data (except for the
row first inserted through the view), resulting in enforcing the WITH
CHECK OPTION constraints with the data passed from the core (except for
the first-inserted row), which led to incorrect results when inserting
into a view referencing a foreign table in which a remote BEFORE ROW
INSERT trigger changes the rows inserted through the view so that they
violate the view's WITH CHECK OPTION constraint. Also, the query
inserting into the view caused an assertion failure in assert-enabled
builds.
Fix these by disabling batch insertion when inserting into such a view.
Back-patch to v14 where batch insertion was added.
Discussion: https://postgr.es/m/CAPmGK17LpbTZs4m4a_6THP54UBeK9fHvX8aVVA%2BC6yEZDZwQcg%40mail.gmail.com
---
contrib/postgres_fdw/expected/postgres_fdw.out | 44 ++++++++++++++++++++++++++
contrib/postgres_fdw/postgres_fdw.c | 6 ++--
contrib/postgres_fdw/sql/postgres_fdw.sql | 16 ++++++++++
3 files changed, 64 insertions(+), 2 deletions(-)
diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out
index 655bdced4f1..2874e69c7e5 100644
--- a/contrib/postgres_fdw/expected/postgres_fdw.out
+++ b/contrib/postgres_fdw/expected/postgres_fdw.out
@@ -6486,6 +6486,29 @@ SELECT * FROM foreign_tbl;
20 | 30
(1 row)
+-- We don't allow batch insert when there are any WCO constraints
+ALTER SERVER loopback OPTIONS (ADD batch_size '10');
+EXPLAIN (VERBOSE, COSTS OFF)
+INSERT INTO rw_view VALUES (0, 15), (0, 5);
+ QUERY PLAN
+--------------------------------------------------------------------------------
+ Insert on public.foreign_tbl
+ Remote SQL: INSERT INTO public.base_tbl(a, b) VALUES ($1, $2) RETURNING a, b
+ Batch Size: 1
+ -> Values Scan on "*VALUES*"
+ Output: "*VALUES*".column1, "*VALUES*".column2
+(5 rows)
+
+INSERT INTO rw_view VALUES (0, 15), (0, 5); -- should fail
+ERROR: new row violates check option for view "rw_view"
+DETAIL: Failing row contains (10, 5).
+SELECT * FROM foreign_tbl;
+ a | b
+----+----
+ 20 | 30
+(1 row)
+
+ALTER SERVER loopback OPTIONS (DROP batch_size);
DROP FOREIGN TABLE foreign_tbl CASCADE;
NOTICE: drop cascades to view rw_view
DROP TRIGGER row_before_insupd_trigger ON base_tbl;
@@ -6578,6 +6601,27 @@ SELECT * FROM foreign_tbl;
20 | 30
(1 row)
+-- We don't allow batch insert when there are any WCO constraints
+ALTER SERVER loopback OPTIONS (ADD batch_size '10');
+EXPLAIN (VERBOSE, COSTS OFF)
+INSERT INTO rw_view VALUES (0, 15), (0, 5);
+ QUERY PLAN
+--------------------------------------------------------
+ Insert on public.parent_tbl
+ -> Values Scan on "*VALUES*"
+ Output: "*VALUES*".column1, "*VALUES*".column2
+(3 rows)
+
+INSERT INTO rw_view VALUES (0, 15), (0, 5); -- should fail
+ERROR: new row violates check option for view "rw_view"
+DETAIL: Failing row contains (10, 5).
+SELECT * FROM foreign_tbl;
+ a | b
+----+----
+ 20 | 30
+(1 row)
+
+ALTER SERVER loopback OPTIONS (DROP batch_size);
DROP FOREIGN TABLE foreign_tbl CASCADE;
DROP TRIGGER row_before_insupd_trigger ON child_tbl;
DROP TABLE parent_tbl CASCADE;
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c
index 58599c7aeaa..b5adcb86c09 100644
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -2046,8 +2046,9 @@ postgresGetForeignModifyBatchSize(ResultRelInfo *resultRelInfo)
batch_size = get_batch_size_option(resultRelInfo->ri_RelationDesc);
/*
- * Disable batching when we have to use RETURNING or there are any
- * BEFORE/AFTER ROW INSERT triggers on the foreign table.
+ * Disable batching when we have to use RETURNING, there are any
+ * BEFORE/AFTER ROW INSERT triggers on the foreign table, or there are any
+ * WITH CHECK OPTION constraints from parent views.
*
* When there are any BEFORE ROW INSERT triggers on the table, we can't
* support it, because such triggers might query the table we're inserting
@@ -2055,6 +2056,7 @@ postgresGetForeignModifyBatchSize(ResultRelInfo *resultRelInfo)
* and prepared for insertion are not there.
*/
if (resultRelInfo->ri_projectReturning != NULL ||
+ resultRelInfo->ri_WithCheckOptions != NIL ||
(resultRelInfo->ri_TrigDesc &&
(resultRelInfo->ri_TrigDesc->trig_insert_before_row ||
resultRelInfo->ri_TrigDesc->trig_insert_after_row)))
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql
index 724c1802b28..3663ca3bdf4 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -1442,6 +1442,14 @@ UPDATE rw_view SET b = b + 15;
UPDATE rw_view SET b = b + 15; -- ok
SELECT * FROM foreign_tbl;
+-- We don't allow batch insert when there are any WCO constraints
+ALTER SERVER loopback OPTIONS (ADD batch_size '10');
+EXPLAIN (VERBOSE, COSTS OFF)
+INSERT INTO rw_view VALUES (0, 15), (0, 5);
+INSERT INTO rw_view VALUES (0, 15), (0, 5); -- should fail
+SELECT * FROM foreign_tbl;
+ALTER SERVER loopback OPTIONS (DROP batch_size);
+
DROP FOREIGN TABLE foreign_tbl CASCADE;
DROP TRIGGER row_before_insupd_trigger ON base_tbl;
DROP TABLE base_tbl;
@@ -1480,6 +1488,14 @@ UPDATE rw_view SET b = b + 15;
UPDATE rw_view SET b = b + 15; -- ok
SELECT * FROM foreign_tbl;
+-- We don't allow batch insert when there are any WCO constraints
+ALTER SERVER loopback OPTIONS (ADD batch_size '10');
+EXPLAIN (VERBOSE, COSTS OFF)
+INSERT INTO rw_view VALUES (0, 15), (0, 5);
+INSERT INTO rw_view VALUES (0, 15), (0, 5); -- should fail
+SELECT * FROM foreign_tbl;
+ALTER SERVER loopback OPTIONS (DROP batch_size);
+
DROP FOREIGN TABLE foreign_tbl CASCADE;
DROP TRIGGER row_before_insupd_trigger ON child_tbl;
DROP TABLE parent_tbl CASCADE;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 12/12: Last-minute updates for release notes.
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 49833d6ea46b4ef28236831617c22f3904c4bcf4
Author: Tom Lane <tg...@sss.pgh.pa.us>
AuthorDate: Mon Aug 8 11:28:47 2022 -0400
Last-minute updates for release notes.
Security: CVE-2022-2625
---
doc/src/sgml/release-14.sgml | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml
index e7da94b025a..b5f91109812 100644
--- a/doc/src/sgml/release-14.sgml
+++ b/doc/src/sgml/release-14.sgml
@@ -35,6 +35,41 @@
<listitem>
<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [b9b21acc7] 2022-08-08 11:12:31 -0400
+Branch: REL_15_STABLE [cc7e0feba] 2022-08-08 11:12:31 -0400
+Branch: REL_14_STABLE [5721da7e4] 2022-08-08 11:12:31 -0400
+Branch: REL_13_STABLE [7e92f78ab] 2022-08-08 11:12:31 -0400
+Branch: REL_12_STABLE [5579726bd] 2022-08-08 11:12:31 -0400
+Branch: REL_11_STABLE [f52d2fbd8] 2022-08-08 11:12:31 -0400
+Branch: REL_10_STABLE [5919bb5a5] 2022-08-08 11:12:31 -0400
+-->
+ <para>
+ Do not let extension scripts replace objects not already belonging
+ to the extension (Tom Lane)
+ </para>
+
+ <para>
+ This change prevents extension scripts from doing <command>CREATE
+ OR REPLACE</command> if there is an existing object that does not
+ belong to the extension. It also prevents <command>CREATE IF NOT
+ EXISTS</command> in the same situation. This prevents a form of
+ trojan-horse attack in which a hostile database user could become
+ the owner of an extension object and then modify it to compromise
+ future uses of the object by other users. As a side benefit, it
+ also reduces the risk of accidentally replacing objects one did
+ not mean to.
+ </para>
+
+ <para>
+ The <productname>PostgreSQL</productname> Project thanks
+ Sven Klemm for reporting this problem.
+ (CVE-2022-2625)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
Author: Alvaro Herrera <al...@alvh.no-ip.org>
Branch: master [9e4f914b5] 2022-07-28 08:40:06 +0200
Branch: REL_15_STABLE [8348413db] 2022-07-28 08:26:05 +0200
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 11/12: Release notes for 14.5, 13.8, 12.12, 11.17, 10.22.
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 43078de87444f13d7f0ccff33e2699f5cad01480
Author: Tom Lane <tg...@sss.pgh.pa.us>
AuthorDate: Sun Aug 7 15:46:27 2022 -0400
Release notes for 14.5, 13.8, 12.12, 11.17, 10.22.
---
doc/src/sgml/release-14.sgml | 330 +++----------------------------------------
1 file changed, 16 insertions(+), 314 deletions(-)
diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml
index 981993e70e3..e7da94b025a 100644
--- a/doc/src/sgml/release-14.sgml
+++ b/doc/src/sgml/release-14.sgml
@@ -58,6 +58,14 @@ Branch: REL_13_STABLE [b76e136ce] 2022-07-29 18:17:36 -0400
Branch: REL_12_STABLE [4349a7615] 2022-07-29 18:17:42 -0400
Branch: REL_11_STABLE [3f9c20536] 2022-07-29 18:17:49 -0400
Branch: REL_10_STABLE [c308003d2] 2022-07-29 18:17:55 -0400
+Author: Alvaro Herrera <al...@alvh.no-ip.org>
+Branch: master [6c1c9f88a] 2022-08-06 15:52:10 +0200
+Branch: REL_15_STABLE [6390bc740] 2022-08-06 15:52:10 +0200
+Branch: REL_14_STABLE [9d5c96d9b] 2022-08-06 15:52:10 +0200
+Branch: REL_13_STABLE [8c5d9ccca] 2022-08-06 15:52:10 +0200
+Branch: REL_12_STABLE [782e5631e] 2022-08-06 15:52:10 +0200
+Branch: REL_11_STABLE [772e6383d] 2022-08-06 15:52:10 +0200
+Branch: REL_10_STABLE [ad0e08394] 2022-08-06 15:52:10 +0200
-->
<para>
Fix replay of <command>CREATE DATABASE</command> WAL
@@ -189,39 +197,6 @@ Branch: REL_10_STABLE [4822b4627] 2022-06-27 08:24:38 +0300
<listitem>
<!--
Author: Tom Lane <tg...@sss.pgh.pa.us>
-Branch: master Release: REL_15_BR [1218780cc] 2022-06-10 10:35:57 -0400
-Branch: REL_14_STABLE Release: REL_14_4 [77c1d92cb] 2022-06-10 10:35:57 -0400
-Branch: REL_13_STABLE [254cd7f31] 2022-06-10 10:35:57 -0400
-Branch: REL_12_STABLE [d3ef5c3ef] 2022-06-10 10:35:57 -0400
-Branch: REL_11_STABLE [199aac8b2] 2022-06-10 10:35:57 -0400
--->
- <para>
- Fix queries in which a <quote>whole-row variable</quote> references
- the result of a function that returns a domain over composite type
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tg...@sss.pgh.pa.us>
-Branch: master Release: REL_15_BR [79b58c6f6] 2022-05-12 11:31:46 -0400
-Branch: REL_14_STABLE Release: REL_14_4 [ac51c9fba] 2022-05-12 11:31:46 -0400
-Branch: REL_13_STABLE [b7579b25c] 2022-05-12 11:31:46 -0400
-Branch: REL_12_STABLE [301b91c56] 2022-05-12 11:31:46 -0400
-Branch: REL_11_STABLE [7f7f1750d] 2022-05-12 11:31:46 -0400
-Branch: REL_10_STABLE [b53442f6f] 2022-05-12 11:31:46 -0400
--->
- <para>
- Fix <quote>variable not found in subplan target list</quote> planner
- error when pulling up a sub-<literal>SELECT</literal> that's
- referenced in a <literal>GROUPING</literal> function (Richard Guo)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tg...@sss.pgh.pa.us>
Branch: master [1aa8dad41] 2022-08-03 17:33:42 -0400
Branch: REL_15_STABLE [14168d57b] 2022-08-03 17:33:42 -0400
Branch: REL_14_STABLE [445b9020c] 2022-08-03 17:33:42 -0400
@@ -359,23 +334,6 @@ Branch: REL_12_STABLE [2cf875a4b] 2022-07-03 17:17:08 -0400
<listitem>
<!--
-Author: Tom Lane <tg...@sss.pgh.pa.us>
-Branch: master Release: REL_15_BR [bf4717b09] 2022-06-07 15:34:30 -0400
-Branch: REL_14_STABLE Release: REL_14_4 [5c3b5f7db] 2022-06-07 15:34:30 -0400
-Branch: REL_13_STABLE [a36196972] 2022-06-07 15:34:30 -0400
-Branch: REL_12_STABLE [435251b85] 2022-06-07 15:34:30 -0400
-Branch: REL_11_STABLE [d628ce048] 2022-06-07 15:34:30 -0400
-Branch: REL_10_STABLE [fb646cbd5] 2022-06-07 15:34:30 -0400
--->
- <para>
- Prevent <function>pg_stat_get_subscription()</function> from
- possibly returning an extra row containing garbage values
- (Kuntal Ghosh)
- </para>
- </listitem>
-
- <listitem>
-<!--
Author: Fujii Masao <fu...@postgresql.org>
Branch: master [b24b2be11] 2022-07-20 09:57:01 +0900
Branch: REL_15_STABLE [0829cc43e] 2022-07-20 09:57:07 +0900
@@ -432,29 +390,6 @@ Branch: REL_10_STABLE [8ace122d4] 2022-07-07 13:07:51 +0100
<listitem>
<!--
-Author: Alvaro Herrera <al...@alvh.no-ip.org>
-Branch: master Release: REL_15_BR [0fbf01120] 2022-05-18 20:28:31 +0200
-Branch: REL_14_STABLE Release: REL_14_4 [94edb85d2] 2022-05-18 20:28:31 +0200
-Branch: REL_13_STABLE [80656f00f] 2022-05-18 20:28:31 +0200
-Branch: REL_12_STABLE [ade17703d] 2022-05-18 20:28:31 +0200
-Branch: REL_11_STABLE [ba83de8ad] 2022-05-18 20:28:31 +0200
-Branch: REL_10_STABLE [16cb7db34] 2022-05-18 20:28:31 +0200
-Branch: master Release: REL_15_BR [62221ef18] 2022-05-18 23:19:53 +0200
-Branch: REL_14_STABLE Release: REL_14_4 [e8b93c6e2] 2022-05-18 23:19:53 +0200
-Branch: REL_13_STABLE [5139db556] 2022-05-18 23:19:53 +0200
-Branch: REL_12_STABLE [0ebd20e20] 2022-05-18 23:19:53 +0200
-Branch: REL_11_STABLE [50bf3157a] 2022-05-18 23:19:53 +0200
-Branch: REL_10_STABLE [29d111518] 2022-05-18 23:19:53 +0200
--->
- <para>
- Avoid crashing if too many column aliases are attached to
- an <literal>XMLTABLE</literal> or <literal>JSON_TABLE</literal>
- construct (Álvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
Author: Tom Lane <tg...@sss.pgh.pa.us>
Branch: master [fd96d14d9] 2022-07-29 13:31:10 -0400
Branch: REL_15_STABLE [e6e804aa2] 2022-07-29 13:31:11 -0400
@@ -488,29 +423,6 @@ Branch: REL_10_STABLE [d54fc7e67] 2022-08-01 12:22:35 -0400
<listitem>
<!--
Author: Tom Lane <tg...@sss.pgh.pa.us>
-Branch: master Release: REL_15_BR [c7461fc25] 2022-05-21 14:45:58 -0400
-Branch: REL_14_STABLE Release: REL_14_4 [6f7eec119] 2022-05-21 14:45:58 -0400
-Branch: REL_13_STABLE [fefd54631] 2022-05-21 14:45:58 -0400
-Branch: REL_12_STABLE [bb2c04676] 2022-05-21 14:45:58 -0400
-Branch: REL_11_STABLE [f3b8d7244] 2022-05-21 14:45:58 -0400
-Branch: REL_10_STABLE [7686403b4] 2022-05-21 14:45:58 -0400
--->
- <para>
- When decompiling a view or rule, show a <command>SELECT</command>
- output column's <literal>AS "?column?"</literal> alias clause
- if it could be referenced elsewhere (Tom Lane)
- </para>
-
- <para>
- Previously, this auto-generated alias was always hidden; but there
- are corner cases where doing so results in a non-restorable view or
- rule definition.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tg...@sss.pgh.pa.us>
Branch: master [b9654cece] 2022-07-21 13:56:02 -0400
Branch: REL_15_STABLE [c1d1e8469] 2022-07-21 13:56:05 -0400
Branch: REL_14_STABLE [da9a28fd5] 2022-07-21 13:56:02 -0400
@@ -534,75 +446,6 @@ Branch: REL_10_STABLE [6bceacfe8] 2022-07-21 13:56:02 -0400
<listitem>
<!--
-Author: Alvaro Herrera <al...@alvh.no-ip.org>
-Branch: master Release: REL_15_BR [602986191] 2022-05-20 18:52:55 +0200
-Branch: REL_14_STABLE Release: REL_14_4 [58b088a9b] 2022-05-20 18:52:55 +0200
-Branch: REL_13_STABLE [3753a169e] 2022-05-20 18:52:55 +0200
-Branch: REL_12_STABLE [4492e73a6] 2022-05-20 18:52:55 +0200
-Branch: REL_11_STABLE [6c6ea6ea8] 2022-05-20 18:52:55 +0200
-Branch: REL_10_STABLE [70f70d7d3] 2022-05-20 18:52:55 +0200
-Branch: REL_10_STABLE [8c47622bb] 2022-05-20 19:05:55 +0200
--->
- <para>
- Report implicitly-created operator families to event triggers
- (Masahiko Sawada)
- </para>
-
- <para>
- If <command>CREATE OPERATOR CLASS</command> results in the implicit
- creation of an operator family, that object was not reported to
- event triggers that should capture such events.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <mi...@paquier.xyz>
-Branch: REL_14_STABLE Release: REL_14_4 [6dced63b4] 2022-05-16 11:26:22 +0900
-Branch: REL_13_STABLE [2e9559b30] 2022-05-16 11:26:26 +0900
-Branch: REL_12_STABLE [7e59b1219] 2022-05-16 11:26:30 +0900
-Branch: REL_11_STABLE [4525151d4] 2022-05-16 11:26:36 +0900
-Branch: REL_10_STABLE [60e956eb8] 2022-05-16 11:26:41 +0900
--->
- <para>
- Fix control file updates made when a restartpoint is running during
- promotion of a standby server (Kyotaro Horiguchi)
- </para>
-
- <para>
- Previously, when the restartpoint completed it could incorrectly
- update the last-checkpoint fields of the control file, potentially
- leading to PANIC and failure to restart if the server crashes before
- the next normal checkpoint completes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Amit Kapila <ak...@postgresql.org>
-Branch: master Release: REL_15_BR [f95d53ede] 2022-05-11 11:11:44 +0530
-Branch: REL_14_STABLE Release: REL_14_4 [d6da71fa8] 2022-05-11 10:51:04 +0530
-Branch: REL_13_STABLE [55558df23] 2022-05-11 10:41:24 +0530
-Branch: REL_12_STABLE [f832b5007] 2022-05-11 10:25:56 +0530
-Branch: REL_11_STABLE [87c1dd246] 2022-05-11 10:12:23 +0530
-Branch: REL_10_STABLE [a4015ec03] 2022-05-11 10:01:35 +0530
--->
- <para>
- Prevent triggering of
- standby's <varname>wal_receiver_timeout</varname> during logical
- replication of large transactions (Wang Wei, Amit Kapila)
- </para>
-
- <para>
- If a large transaction on the primary server sends no data to the
- standby (perhaps because no table it changes is published), it was
- possible for the standby to timeout. Fix that by ensuring we send
- keepalive messages periodically in such situations.
- </para>
- </listitem>
-
- <listitem>
-<!--
Author: Fujii Masao <fu...@postgresql.org>
Branch: master [ee7964776] 2022-07-20 09:56:42 +0900
Branch: REL_15_STABLE [286793b98] 2022-07-20 09:56:52 +0900
@@ -673,68 +516,6 @@ Branch: REL_13_STABLE [16f5a8da7] 2022-06-15 10:16:35 +0530
<listitem>
<!--
-Author: Amit Kapila <ak...@postgresql.org>
-Branch: REL_10_STABLE [37fd181d6] 2022-06-03 08:15:00 +0530
--->
- <para>
- Ignore heap-rewrite temporary tables for materialized views in
- logical replication (Euler Taveira)
- </para>
-
- <para>
- A <literal>FOR ALL TABLES</literal> publication will try to publish
- temporary tables if left to its own devices. There is a heuristic
- to suppress these, but it failed to cover internal temporary tables
- created while rewriting a materialized view. This created a risk of
- <quote>logical replication target relation ... does not
- exist</quote> failures during <command>REFRESH MATERIALIZED
- VIEW</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tg...@sss.pgh.pa.us>
-Branch: master Release: REL_15_BR [16c80e7d0] 2022-05-31 14:47:44 -0400
-Branch: REL_14_STABLE Release: REL_14_4 [c47a55852] 2022-05-31 14:47:44 -0400
-Branch: REL_13_STABLE [c73748b68] 2022-05-31 14:47:44 -0400
-Branch: REL_12_STABLE [a3faebd6a] 2022-05-31 14:47:44 -0400
-Branch: REL_11_STABLE [ae758e603] 2022-05-31 14:47:44 -0400
-Branch: REL_10_STABLE [2114910ca] 2022-05-31 14:47:44 -0400
--->
- <para>
- Prevent open-file leak when reading an invalid timezone abbreviation
- file (Kyotaro Horiguchi)
- </para>
-
- <para>
- Such cases could result in harmless warning messages.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <mi...@paquier.xyz>
-Branch: master Release: REL_15_BR [f1431f3bf] 2022-05-28 12:12:40 +0900
-Branch: REL_14_STABLE Release: REL_14_4 [fe441a031] 2022-05-28 12:12:46 +0900
-Branch: REL_13_STABLE [1e6802990] 2022-05-28 12:12:51 +0900
-Branch: REL_12_STABLE [ae236bf66] 2022-05-28 12:12:55 +0900
-Branch: REL_11_STABLE [c3db8a2e2] 2022-05-28 12:12:58 +0900
-Branch: REL_10_STABLE [1b40ceea2] 2022-05-28 12:13:02 +0900
--->
- <para>
- Allow custom server parameters to have short descriptions that are
- NULL (Steve Chavez)
- </para>
-
- <para>
- Previously, although extensions could choose to create such
- settings, some code paths would crash while processing them.
- </para>
- </listitem>
-
- <listitem>
-<!--
Author: Alvaro Herrera <al...@alvh.no-ip.org>
Branch: master [e44dae07f] 2022-08-05 18:00:17 +0200
Branch: REL_15_STABLE [2cff30259] 2022-08-05 18:00:17 +0200
@@ -743,6 +524,14 @@ Branch: REL_13_STABLE [de31e6f81] 2022-08-05 18:00:17 +0200
Branch: REL_12_STABLE [49b85e481] 2022-08-05 18:00:17 +0200
Branch: REL_11_STABLE [39e45d3ce] 2022-08-05 18:00:17 +0200
Branch: REL_10_STABLE [e797c7a6f] 2022-08-05 18:00:17 +0200
+Author: Alvaro Herrera <al...@alvh.no-ip.org>
+Branch: master [afe58c8b7] 2022-08-07 10:19:40 +0200
+Branch: REL_15_STABLE [9c3006000] 2022-08-07 10:19:40 +0200
+Branch: REL_14_STABLE [f4beef1c2] 2022-08-07 10:19:40 +0200
+Branch: REL_13_STABLE [1626590f2] 2022-08-07 10:19:40 +0200
+Branch: REL_12_STABLE [3aafd5da7] 2022-08-07 10:19:40 +0200
+Branch: REL_11_STABLE [61904503b] 2022-08-07 10:19:40 +0200
+Branch: REL_10_STABLE [8e5874964] 2022-08-07 10:19:40 +0200
-->
<para>
Fix WAL consistency checking logic to correctly
@@ -826,30 +615,6 @@ Branch: REL_11_STABLE [6d61aef5d] 2022-07-18 19:38:24 +0200
<listitem>
<!--
-Author: Tom Lane <tg...@sss.pgh.pa.us>
-Branch: master Release: REL_15_BR [2b65de7fc] 2022-05-26 14:14:05 -0400
-Branch: REL_14_STABLE Release: REL_14_4 [b4be4a082] 2022-05-26 14:14:05 -0400
-Branch: REL_13_STABLE [9e3dbc6fd] 2022-05-26 14:14:05 -0400
-Branch: REL_12_STABLE [01ab9fb7d] 2022-05-26 14:14:05 -0400
-Branch: REL_11_STABLE [a44bc8b8f] 2022-05-26 14:14:05 -0400
-Branch: REL_10_STABLE [ef54a6576] 2022-05-26 14:14:05 -0400
--->
- <para>
- Remove misguided SSL key file ownership check
- in <application>libpq</application> (Tom Lane)
- </para>
-
- <para>
- In the previous minor releases, we copied the server's permission
- checking rules for SSL private key files into libpq. But we should
- not have also copied the server's file-ownership check. While that
- works in normal use-cases, it can result in an unexpected failure
- for clients running as root, and perhaps in other cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
Author: Alvaro Herrera <al...@alvh.no-ip.org>
Branch: master [054325c5e] 2022-07-05 14:21:20 +0200
Branch: REL_15_STABLE [93cf9233c] 2022-07-05 14:21:20 +0200
@@ -873,29 +638,6 @@ Branch: REL_14_STABLE [9e038d690] 2022-07-13 12:10:03 +0200
<listitem>
<!--
Author: Tom Lane <tg...@sss.pgh.pa.us>
-Branch: master Release: REL_15_BR [6d157e7cb] 2022-06-06 11:20:21 -0400
-Branch: REL_14_STABLE Release: REL_14_4 [a5dbca460] 2022-06-06 11:20:31 -0400
-Branch: REL_13_STABLE [16d68007c] 2022-06-06 11:20:36 -0400
-Branch: REL_12_STABLE [02026cadb] 2022-06-06 11:20:41 -0400
-Branch: REL_11_STABLE [d82ed5b2f] 2022-06-06 11:20:46 -0400
-Branch: REL_10_STABLE [89254606b] 2022-06-06 11:20:52 -0400
--->
- <para>
- Ensure <application>ecpg</application> reports server connection loss
- sanely (Tom Lane)
- </para>
-
- <para>
- Misprocessing of a libpq-generated error result, such as a report of
- lost connection, would lead to printing <quote>(null)</quote>
- instead of a useful error message; or in older releases it would
- lead to a crash.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tg...@sss.pgh.pa.us>
Branch: master Release: REL_15_BR [ba412c905] 2022-06-14 18:16:46 -0400
Branch: REL_14_STABLE [7bc21ed8c] 2022-06-14 18:16:46 -0400
Branch: REL_13_STABLE [12b8fb34a] 2022-06-14 18:16:46 -0400
@@ -1155,46 +897,6 @@ Branch: REL_14_STABLE [e086b5538] 2022-06-26 11:00:04 +1200
</para>
</listitem>
- <listitem>
-<!--
-Author: Tom Lane <tg...@sss.pgh.pa.us>
-Branch: master Release: REL_15_BR [eb39610f8] 2022-06-01 16:15:47 -0400
-Branch: REL_14_STABLE Release: REL_14_4 [1072e4c45] 2022-06-01 16:15:47 -0400
-Branch: REL_13_STABLE [eeac7dd9f] 2022-06-01 16:15:47 -0400
-Branch: REL_12_STABLE [c08538734] 2022-06-01 16:15:47 -0400
-Branch: REL_11_STABLE [b5265196e] 2022-06-01 16:15:47 -0400
-Branch: REL_10_STABLE [d5e1d5ed9] 2022-06-01 16:15:47 -0400
-Branch: REL9_6_STABLE [d4c161842] 2022-06-01 16:15:47 -0400
-Branch: REL9_5_STABLE [9fdeae848] 2022-06-01 16:15:47 -0400
-Branch: REL9_4_STABLE [b53780e1b] 2022-06-01 16:15:47 -0400
-Branch: REL9_3_STABLE [a3b685fdd] 2022-06-01 16:15:47 -0400
-Branch: REL9_2_STABLE [6f9ea6cf3] 2022-06-01 16:15:47 -0400
--->
- <para>
- Adjust PL/Perl test case so it will work under Perl 5.36
- (Dagfinn Ilmari Mannsåker)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tg...@sss.pgh.pa.us>
-Branch: master Release: REL_15_BR [aff45c879] 2022-05-10 18:42:02 -0400
-Branch: REL_14_STABLE Release: REL_14_4 [12736e7dc] 2022-05-10 18:42:02 -0400
-Branch: REL_13_STABLE [af9b96767] 2022-05-10 18:42:02 -0400
-Branch: REL_12_STABLE [8ed13fb93] 2022-05-10 18:42:02 -0400
-Branch: REL_11_STABLE [36d76da81] 2022-05-10 18:42:02 -0400
-Branch: REL_10_STABLE [c61f36d99] 2022-05-10 18:42:02 -0400
--->
- <para>
- Avoid incorrectly using an
- out-of-date <application>libldap_r</application> library when
- multiple <productname>OpenLDAP</productname> installations are
- present while building <productname>PostgreSQL</productname>
- (Tom Lane)
- </para>
- </listitem>
-
</itemizedlist>
</sect2>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 10/12: First-draft release notes for 14.5.
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 4175410d6f25b5798dbaae88cb3c9115763081e6
Author: Tom Lane <tg...@sss.pgh.pa.us>
AuthorDate: Fri Aug 5 17:38:53 2022 -0400
First-draft release notes for 14.5.
As usual, the release notes for older branches will be made by cutting
these down, but put them up for community review first.
Due to the out-of-cycle release of 14.4, there are a number of commits
that appeared in 14.4 that are not yet shipped in the earlier branches.
This draft repeats those release note entries for convenience in
preparing the older-branch notes later. They'll be stripped out of
the 14.5 section after that's done.
---
doc/src/sgml/release-14.sgml | 1199 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1199 insertions(+)
diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml
index 95a6bfe037f..981993e70e3 100644
--- a/doc/src/sgml/release-14.sgml
+++ b/doc/src/sgml/release-14.sgml
@@ -1,6 +1,1205 @@
<!-- doc/src/sgml/release-14.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+ <sect1 id="release-14-5">
+ <title>Release 14.5</title>
+
+ <formalpara>
+ <title>Release date:</title>
+ <para>2022-08-11</para>
+ </formalpara>
+
+ <para>
+ This release contains a variety of fixes from 14.4.
+ For information about new features in major release 14, see
+ <xref linkend="release-14"/>.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 14.5</title>
+
+ <para>
+ A dump/restore is not required for those running 14.X.
+ </para>
+
+ <para>
+ However, if you are upgrading from a version earlier than 14.4,
+ see <xref linkend="release-14-4"/>.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+<!--
+Author: Alvaro Herrera <al...@alvh.no-ip.org>
+Branch: master [9e4f914b5] 2022-07-28 08:40:06 +0200
+Branch: REL_15_STABLE [8348413db] 2022-07-28 08:26:05 +0200
+Branch: REL_14_STABLE [a3aacb7cb] 2022-07-28 08:26:05 +0200
+Branch: REL_13_STABLE [9a7e26b9c] 2022-07-28 08:26:05 +0200
+Branch: REL_12_STABLE [6d20f8c5a] 2022-07-28 08:26:05 +0200
+Branch: REL_11_STABLE [5a10c262f] 2022-07-28 08:26:05 +0200
+Branch: REL_10_STABLE [084318c33] 2022-07-28 08:26:05 +0200
+Branch: master [59be1c942] 2022-07-29 12:50:47 +0200
+Branch: REL_15_STABLE [798d64488] 2022-07-29 12:50:47 +0200
+Branch: REL_14_STABLE [4d8d85740] 2022-07-29 12:50:47 +0200
+Branch: REL_13_STABLE [7cfe688de] 2022-07-29 12:50:47 +0200
+Branch: REL_12_STABLE [658e5d534] 2022-07-29 12:50:47 +0200
+Branch: REL_11_STABLE [fcd72cf29] 2022-07-29 12:50:47 +0200
+Branch: REL_10_STABLE [6ffaf75a8] 2022-07-29 12:50:47 +0200
+Author: Andrew Dunstan <an...@dunslane.net>
+Branch: master [b998196bb] 2022-07-29 17:54:19 -0400
+Branch: REL_15_STABLE [2eb3f167f] 2022-07-29 18:17:17 -0400
+Branch: REL_14_STABLE [e90c4fc88] 2022-07-29 18:17:30 -0400
+Branch: REL_13_STABLE [b76e136ce] 2022-07-29 18:17:36 -0400
+Branch: REL_12_STABLE [4349a7615] 2022-07-29 18:17:42 -0400
+Branch: REL_11_STABLE [3f9c20536] 2022-07-29 18:17:49 -0400
+Branch: REL_10_STABLE [c308003d2] 2022-07-29 18:17:55 -0400
+-->
+ <para>
+ Fix replay of <command>CREATE DATABASE</command> WAL
+ records on standby servers
+ (Kyotaro Horiguchi, Asim R Praveen, Paul Guo)
+ </para>
+
+ <para>
+ Standby servers may encounter missing tablespace directories
+ when replaying database-creation WAL records. Prior to this
+ patch, a standby would fail to recover in such a case;
+ however, such directories could be legitimately missing.
+ Create the tablespace (as a plain directory), then check that it
+ has been dropped again once replay reaches a consistent state.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Alvaro Herrera <al...@alvh.no-ip.org>
+Branch: REL_14_STABLE [961cab0a5] 2022-07-27 07:55:13 +0200
+Branch: REL_13_STABLE [16e7a8fd8] 2022-07-27 07:55:13 +0200
+Branch: REL_12_STABLE [ca347f543] 2022-07-27 07:55:12 +0200
+Branch: REL_11_STABLE [258c89641] 2022-07-27 07:55:12 +0200
+Branch: REL_10_STABLE [7bdbbb873] 2022-07-27 07:55:12 +0200
+Author: Thomas Munro <tm...@postgresql.org>
+Branch: master [9d3444dcc] 2022-07-22 16:57:12 +1200
+Branch: REL_15_STABLE [6d306ab73] 2022-07-22 16:57:36 +1200
+Branch: REL_14_STABLE [fee0165fc] 2022-07-22 16:57:57 +1200
+Branch: master [4fc6b6eef] 2022-07-28 14:26:12 +1200
+Branch: REL_15_STABLE [fc4e5af30] 2022-07-28 14:27:28 +1200
+Branch: REL_14_STABLE [5ad478c9d] 2022-07-28 14:27:06 +1200
+-->
+ <para>
+ Support <quote>in place</quote> tablespaces
+ (Thomas Munro, Michael Paquier, Álvaro Herrera)
+ </para>
+
+ <para>
+ Normally a Postgres tablespace is a symbolic link to a directory on
+ some other filesystem. This change allows it to just be a plain
+ directory. While this has no use for separating tables onto
+ different filesystems, it is a convenient setup for testing.
+ Moreover, it is necessary to support the <command>CREATE
+ DATABASE</command> replay fix, which transiently creates a missing
+ tablespace as an <quote>in place</quote> tablespace.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Noah Misch <no...@leadboat.com>
+Branch: master Release: REL_15_BR [00377b9a0] 2022-06-25 09:07:41 -0700
+Branch: REL_14_STABLE [ace997386] 2022-06-25 09:07:44 -0700
+Branch: REL_13_STABLE [8782ce49e] 2022-06-25 09:07:45 -0700
+Branch: REL_12_STABLE [93731d549] 2022-06-25 09:07:45 -0700
+Branch: REL_11_STABLE [6d49cc286] 2022-06-25 09:07:46 -0700
+Branch: REL_10_STABLE [88b39e614] 2022-06-25 09:07:46 -0700
+-->
+ <para>
+ Fix permissions checks in <command>CREATE INDEX</command> (Nathan
+ Bossart, Noah Misch)
+ </para>
+
+ <para>
+ The fix for CVE-2022-1552 caused <command>CREATE INDEX</command> to
+ apply the table owner's permissions while performing lookups of
+ operator classes and other objects, where formerly the calling
+ user's permissions were used. This broke dump/restore scenarios,
+ because <application>pg_dump</application> issues <command>CREATE
+ INDEX</command> before re-granting permissions.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [f92944137] 2022-07-26 13:07:03 -0400
+Branch: REL_15_STABLE [a0c632c1d] 2022-07-26 13:07:03 -0400
+Branch: REL_14_STABLE [3e1297a63] 2022-07-26 13:07:03 -0400
+Branch: REL_13_STABLE [6c193c2ac] 2022-07-26 13:07:03 -0400
+Branch: REL_12_STABLE [968b89257] 2022-07-26 13:07:03 -0400
+Branch: REL_11_STABLE [9e3e1ac45] 2022-07-26 13:07:03 -0400
+Branch: REL_10_STABLE [964f42aa2] 2022-07-26 13:07:03 -0400
+-->
+ <para>
+ In extended query protocol, force an immediate commit
+ after <command>CREATE DATABASE</command> and other commands that
+ can't run in a transaction block (Tom Lane)
+ </para>
+
+ <para>
+ If the client does not send a Sync message immediately after such a
+ command, but instead sends another command, any failure in that
+ command would lead to rolling back the preceding command, typically
+ leaving inconsistent state on-disk (such as a missing or extra
+ database directory). The mechanisms intended to prevent that
+ situation turn out to work for multiple commands in a simple-Query
+ message, but not for a series of extended-protocol messages. To
+ prevent inconsistency without breaking use-cases that work today,
+ force an implicit commit after such commands.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Heikki Linnakangas <he...@iki.fi>
+Branch: master Release: REL_15_BR [adf6d5dfb] 2022-06-27 08:21:08 +0300
+Branch: REL_14_STABLE [e24615a00] 2022-06-27 08:24:30 +0300
+Branch: REL_13_STABLE [7ba325fd7] 2022-06-27 08:24:35 +0300
+Branch: REL_12_STABLE [af530898e] 2022-06-27 08:24:36 +0300
+Branch: REL_11_STABLE [b49889f3c] 2022-06-27 08:24:37 +0300
+Branch: REL_10_STABLE [4822b4627] 2022-06-27 08:24:38 +0300
+-->
+ <para>
+ Fix race condition when checking transaction visibility (Simon Riggs)
+ </para>
+
+ <para>
+ <function>TransactionIdIsInProgress</function> could
+ report <literal>false</literal> before the subject transaction is
+ considered visible, leading to various misbehaviors. The race
+ condition window is normally very narrow, but use of synchronous
+ replication makes it much wider, because the wait for a synchronous
+ replica happens in that window.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master Release: REL_15_BR [1218780cc] 2022-06-10 10:35:57 -0400
+Branch: REL_14_STABLE Release: REL_14_4 [77c1d92cb] 2022-06-10 10:35:57 -0400
+Branch: REL_13_STABLE [254cd7f31] 2022-06-10 10:35:57 -0400
+Branch: REL_12_STABLE [d3ef5c3ef] 2022-06-10 10:35:57 -0400
+Branch: REL_11_STABLE [199aac8b2] 2022-06-10 10:35:57 -0400
+-->
+ <para>
+ Fix queries in which a <quote>whole-row variable</quote> references
+ the result of a function that returns a domain over composite type
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master Release: REL_15_BR [79b58c6f6] 2022-05-12 11:31:46 -0400
+Branch: REL_14_STABLE Release: REL_14_4 [ac51c9fba] 2022-05-12 11:31:46 -0400
+Branch: REL_13_STABLE [b7579b25c] 2022-05-12 11:31:46 -0400
+Branch: REL_12_STABLE [301b91c56] 2022-05-12 11:31:46 -0400
+Branch: REL_11_STABLE [7f7f1750d] 2022-05-12 11:31:46 -0400
+Branch: REL_10_STABLE [b53442f6f] 2022-05-12 11:31:46 -0400
+-->
+ <para>
+ Fix <quote>variable not found in subplan target list</quote> planner
+ error when pulling up a sub-<literal>SELECT</literal> that's
+ referenced in a <literal>GROUPING</literal> function (Richard Guo)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [1aa8dad41] 2022-08-03 17:33:42 -0400
+Branch: REL_15_STABLE [14168d57b] 2022-08-03 17:33:42 -0400
+Branch: REL_14_STABLE [445b9020c] 2022-08-03 17:33:42 -0400
+Branch: REL_13_STABLE [da4ed7588] 2022-08-03 17:33:42 -0400
+Branch: master [cc1164799] 2022-08-04 11:11:33 -0400
+Branch: REL_15_STABLE [11e7d626c] 2022-08-04 11:11:22 -0400
+Branch: REL_14_STABLE [1a9ac8492] 2022-08-04 11:11:22 -0400
+Branch: REL_13_STABLE [8d38ccafc] 2022-08-04 11:11:22 -0400
+-->
+ <para>
+ Fix incorrect plans when sorting by an expression that contains a
+ non-top-level set-returning function (Richard Guo, Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [e5fc38ac3] 2022-08-05 12:46:44 -0400
+Branch: REL_15_STABLE [7394028be] 2022-08-05 12:46:44 -0400
+Branch: REL_14_STABLE [7c6ce0475] 2022-08-05 12:46:45 -0400
+-->
+ <para>
+ Fix incorrect permissions-checking code for extended statistics
+ (Richard Guo)
+ </para>
+
+ <para>
+ If there are extended statistics on a table that the user has only
+ partial <literal>SELECT</literal> permissions on, some queries would
+ fail with <quote>unrecognized node type</quote> errors.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [e33ae53dd] 2022-08-05 15:00:03 -0400
+Branch: REL_15_STABLE [43f76fb19] 2022-08-05 15:00:03 -0400
+Branch: REL_14_STABLE [3fe2fc6bb] 2022-08-05 15:00:03 -0400
+-->
+ <para>
+ Fix extended statistics machinery to handle MCV-type statistics on
+ boolean-valued expressions (Tom Lane)
+ </para>
+
+ <para>
+ Statistics collection worked fine, but a query containing such an
+ expression in <literal>WHERE</literal> would fail
+ with <quote>unknown clause type</quote>.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [94da73281] 2022-08-05 13:58:47 -0400
+Branch: REL_15_STABLE [b6d147bcb] 2022-08-05 13:58:48 -0400
+Branch: REL_14_STABLE [ea6c91696] 2022-08-05 13:58:48 -0400
+Branch: REL_13_STABLE [c102d1106] 2022-08-05 13:58:49 -0400
+Branch: master [4c81a50e5] 2022-08-05 15:57:46 -0400
+Branch: REL_15_STABLE [6303df08f] 2022-08-05 15:57:46 -0400
+Branch: REL_14_STABLE [b9243cada] 2022-08-05 15:57:46 -0400
+Branch: REL_13_STABLE [476f9d533] 2022-08-05 15:57:46 -0400
+-->
+ <para>
+ Avoid planner core dump with <literal><replaceable>constant</replaceable>
+ = ANY(<replaceable>array</replaceable>)</literal> clauses when
+ there are MCV-type extended statistics on
+ the <replaceable>array</replaceable> variable (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Alvaro Herrera <al...@alvh.no-ip.org>
+Branch: master [ec0925c22] 2022-08-05 09:47:26 +0200
+Branch: REL_15_STABLE [e78fd9084] 2022-08-05 09:47:15 +0200
+Branch: REL_14_STABLE [731d514ae] 2022-08-05 09:47:11 +0200
+Branch: REL_13_STABLE [ab8556630] 2022-08-05 09:47:06 +0200
+Branch: REL_12_STABLE [6e7b37264] 2022-08-05 09:47:02 +0200
+Branch: REL_11_STABLE [ce8e06652] 2022-08-05 09:46:58 +0200
+Branch: master [90a4b6413] 2022-08-05 11:55:52 +0200
+Branch: REL_15_STABLE [aa242501a] 2022-08-05 11:55:52 +0200
+Branch: REL_14_STABLE [6d9481cd0] 2022-08-05 11:55:52 +0200
+Branch: REL_13_STABLE [d2a74621e] 2022-08-05 11:55:52 +0200
+Branch: REL_12_STABLE [4ad4c1f41] 2022-08-05 11:55:52 +0200
+Branch: REL_11_STABLE [91130dd31] 2022-08-05 11:55:52 +0200
+-->
+ <para>
+ Fix <literal>ALTER TABLE ... ENABLE/DISABLE TRIGGER</literal> to
+ handle recursion correctly for triggers on partitioned tables
+ (Álvaro Herrera, Amit Langote)
+ </para>
+
+ <para>
+ In certain cases, a <quote>trigger does not exist</quote> failure
+ would occur because the command would try to adjust the trigger on a
+ child partition that doesn't have it.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [e64cdab00] 2022-07-12 16:30:36 -0400
+Branch: REL_15_STABLE [12c99c884] 2022-07-12 16:30:36 -0400
+Branch: REL_14_STABLE [af72b0889] 2022-07-12 16:30:36 -0400
+-->
+ <para>
+ Allow cancellation of <command>ANALYZE</command> while it is
+ computing extended statistics (Tom Lane, Justin Pryzby)
+ </para>
+
+ <para>
+ In some scenarios with high statistics targets, it was possible to
+ spend many seconds in an un-cancellable sort operation.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Andrew Dunstan <an...@dunslane.net>
+Branch: master [89a39d4a4] 2022-07-03 17:08:25 -0400
+Branch: REL_15_STABLE [7d9bf589b] 2022-07-03 17:27:03 -0400
+Branch: REL_14_STABLE [7fd43684f] 2022-07-03 17:16:11 -0400
+Branch: REL_13_STABLE [03cefe814] 2022-07-03 17:16:58 -0400
+Branch: REL_12_STABLE [2cf875a4b] 2022-07-03 17:17:08 -0400
+-->
+ <para>
+ Improve syntax error messages for type <type>jsonpath</type>
+ (Andrew Dunstan)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master Release: REL_15_BR [bf4717b09] 2022-06-07 15:34:30 -0400
+Branch: REL_14_STABLE Release: REL_14_4 [5c3b5f7db] 2022-06-07 15:34:30 -0400
+Branch: REL_13_STABLE [a36196972] 2022-06-07 15:34:30 -0400
+Branch: REL_12_STABLE [435251b85] 2022-06-07 15:34:30 -0400
+Branch: REL_11_STABLE [d628ce048] 2022-06-07 15:34:30 -0400
+Branch: REL_10_STABLE [fb646cbd5] 2022-06-07 15:34:30 -0400
+-->
+ <para>
+ Prevent <function>pg_stat_get_subscription()</function> from
+ possibly returning an extra row containing garbage values
+ (Kuntal Ghosh)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Fujii Masao <fu...@postgresql.org>
+Branch: master [b24b2be11] 2022-07-20 09:57:01 +0900
+Branch: REL_15_STABLE [0829cc43e] 2022-07-20 09:57:07 +0900
+Branch: REL_14_STABLE [be2e842c8] 2022-07-20 09:53:37 +0900
+Branch: REL_13_STABLE [162ade612] 2022-07-20 09:53:53 +0900
+Branch: REL_12_STABLE [f0eb83f81] 2022-07-20 09:54:03 +0900
+Branch: REL_11_STABLE [80c3ea918] 2022-07-20 09:54:10 +0900
+Branch: REL_10_STABLE [2497d2b77] 2022-07-20 09:54:24 +0900
+-->
+ <para>
+ Ensure that <function>pg_stop_backup()</function> cleans up session
+ state properly (Fujii Masao)
+ </para>
+
+ <para>
+ This omission could lead to assertion failures or crashes later in
+ the session.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [4ddfbd2a8] 2022-07-31 13:43:17 -0400
+Branch: REL_15_STABLE [d386b75df] 2022-07-31 13:43:17 -0400
+Branch: REL_14_STABLE [e71d4254f] 2022-07-31 13:43:17 -0400
+-->
+ <para>
+ Fix <function>trim_array()</function> to handle a zero-dimensional
+ array argument sanely (Martin Kalcher)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Dean Rasheed <de...@gmail.com>
+Branch: master [8d367a44d] 2022-07-07 13:08:08 +0100
+Branch: REL_15_STABLE [ea9e59d70] 2022-07-07 13:08:06 +0100
+Branch: REL_14_STABLE [8d8464445] 2022-07-07 13:08:03 +0100
+Branch: REL_13_STABLE [f890223bc] 2022-07-07 13:08:00 +0100
+Branch: REL_12_STABLE [f9c655d64] 2022-07-07 13:07:57 +0100
+Branch: REL_11_STABLE [e88b1f1e2] 2022-07-07 13:07:54 +0100
+Branch: REL_10_STABLE [8ace122d4] 2022-07-07 13:07:51 +0100
+-->
+ <para>
+ Fix join alias matching in <literal>FOR [KEY] UPDATE/SHARE</literal>
+ clauses (Dean Rasheed)
+ </para>
+
+ <para>
+ In corner cases, a misleading error could be reported.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Alvaro Herrera <al...@alvh.no-ip.org>
+Branch: master Release: REL_15_BR [0fbf01120] 2022-05-18 20:28:31 +0200
+Branch: REL_14_STABLE Release: REL_14_4 [94edb85d2] 2022-05-18 20:28:31 +0200
+Branch: REL_13_STABLE [80656f00f] 2022-05-18 20:28:31 +0200
+Branch: REL_12_STABLE [ade17703d] 2022-05-18 20:28:31 +0200
+Branch: REL_11_STABLE [ba83de8ad] 2022-05-18 20:28:31 +0200
+Branch: REL_10_STABLE [16cb7db34] 2022-05-18 20:28:31 +0200
+Branch: master Release: REL_15_BR [62221ef18] 2022-05-18 23:19:53 +0200
+Branch: REL_14_STABLE Release: REL_14_4 [e8b93c6e2] 2022-05-18 23:19:53 +0200
+Branch: REL_13_STABLE [5139db556] 2022-05-18 23:19:53 +0200
+Branch: REL_12_STABLE [0ebd20e20] 2022-05-18 23:19:53 +0200
+Branch: REL_11_STABLE [50bf3157a] 2022-05-18 23:19:53 +0200
+Branch: REL_10_STABLE [29d111518] 2022-05-18 23:19:53 +0200
+-->
+ <para>
+ Avoid crashing if too many column aliases are attached to
+ an <literal>XMLTABLE</literal> or <literal>JSON_TABLE</literal>
+ construct (Álvaro Herrera)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [fd96d14d9] 2022-07-29 13:31:10 -0400
+Branch: REL_15_STABLE [e6e804aa2] 2022-07-29 13:31:11 -0400
+Branch: REL_14_STABLE [8df167baa] 2022-07-29 13:30:50 -0400
+Branch: REL_13_STABLE [ba2002d02] 2022-07-29 13:30:50 -0400
+Branch: REL_12_STABLE [d79f00e82] 2022-07-29 13:30:50 -0400
+Branch: REL_11_STABLE [8dea18372] 2022-07-29 13:30:50 -0400
+Branch: REL_10_STABLE [e6a48014d] 2022-07-29 13:30:50 -0400
+Branch: master [83f1793d6] 2022-08-01 12:22:35 -0400
+Branch: REL_15_STABLE [adc3ae6eb] 2022-08-01 12:22:35 -0400
+Branch: REL_14_STABLE [d947a8bd5] 2022-08-01 12:22:35 -0400
+Branch: REL_13_STABLE [331f8b851] 2022-08-01 12:22:35 -0400
+Branch: REL_12_STABLE [5d280bc89] 2022-08-01 12:22:35 -0400
+Branch: REL_11_STABLE [51d8b52fc] 2022-08-01 12:22:35 -0400
+Branch: REL_10_STABLE [d54fc7e67] 2022-08-01 12:22:35 -0400
+-->
+ <para>
+ Reject <literal>ROW()</literal> expressions and functions
+ in <literal>FROM</literal> that have too many columns (Tom Lane)
+ </para>
+
+ <para>
+ Cases with more than about 1600 columns are unsupported, and
+ have always failed at execution. However, it emerges that some
+ earlier code could be driven to assertion failures or crashes by
+ queries with more than 32K columns. Add a parse-time check to
+ prevent that.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master Release: REL_15_BR [c7461fc25] 2022-05-21 14:45:58 -0400
+Branch: REL_14_STABLE Release: REL_14_4 [6f7eec119] 2022-05-21 14:45:58 -0400
+Branch: REL_13_STABLE [fefd54631] 2022-05-21 14:45:58 -0400
+Branch: REL_12_STABLE [bb2c04676] 2022-05-21 14:45:58 -0400
+Branch: REL_11_STABLE [f3b8d7244] 2022-05-21 14:45:58 -0400
+Branch: REL_10_STABLE [7686403b4] 2022-05-21 14:45:58 -0400
+-->
+ <para>
+ When decompiling a view or rule, show a <command>SELECT</command>
+ output column's <literal>AS "?column?"</literal> alias clause
+ if it could be referenced elsewhere (Tom Lane)
+ </para>
+
+ <para>
+ Previously, this auto-generated alias was always hidden; but there
+ are corner cases where doing so results in a non-restorable view or
+ rule definition.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [b9654cece] 2022-07-21 13:56:02 -0400
+Branch: REL_15_STABLE [c1d1e8469] 2022-07-21 13:56:05 -0400
+Branch: REL_14_STABLE [da9a28fd5] 2022-07-21 13:56:02 -0400
+Branch: REL_13_STABLE [5b5d43513] 2022-07-21 13:56:02 -0400
+Branch: REL_12_STABLE [b243092a6] 2022-07-21 13:56:02 -0400
+Branch: REL_11_STABLE [1078742af] 2022-07-21 13:56:02 -0400
+Branch: REL_10_STABLE [6bceacfe8] 2022-07-21 13:56:02 -0400
+-->
+ <para>
+ Fix dumping of a view using a function in <literal>FROM</literal>
+ that returns a composite type, when column(s) of the composite type
+ have been dropped since the view was made (Tom Lane)
+ </para>
+
+ <para>
+ This oversight could lead to dump/reload
+ or <application>pg_upgrade</application> failures, as the dumped
+ view would have too many column aliases for the function.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Alvaro Herrera <al...@alvh.no-ip.org>
+Branch: master Release: REL_15_BR [602986191] 2022-05-20 18:52:55 +0200
+Branch: REL_14_STABLE Release: REL_14_4 [58b088a9b] 2022-05-20 18:52:55 +0200
+Branch: REL_13_STABLE [3753a169e] 2022-05-20 18:52:55 +0200
+Branch: REL_12_STABLE [4492e73a6] 2022-05-20 18:52:55 +0200
+Branch: REL_11_STABLE [6c6ea6ea8] 2022-05-20 18:52:55 +0200
+Branch: REL_10_STABLE [70f70d7d3] 2022-05-20 18:52:55 +0200
+Branch: REL_10_STABLE [8c47622bb] 2022-05-20 19:05:55 +0200
+-->
+ <para>
+ Report implicitly-created operator families to event triggers
+ (Masahiko Sawada)
+ </para>
+
+ <para>
+ If <command>CREATE OPERATOR CLASS</command> results in the implicit
+ creation of an operator family, that object was not reported to
+ event triggers that should capture such events.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Michael Paquier <mi...@paquier.xyz>
+Branch: REL_14_STABLE Release: REL_14_4 [6dced63b4] 2022-05-16 11:26:22 +0900
+Branch: REL_13_STABLE [2e9559b30] 2022-05-16 11:26:26 +0900
+Branch: REL_12_STABLE [7e59b1219] 2022-05-16 11:26:30 +0900
+Branch: REL_11_STABLE [4525151d4] 2022-05-16 11:26:36 +0900
+Branch: REL_10_STABLE [60e956eb8] 2022-05-16 11:26:41 +0900
+-->
+ <para>
+ Fix control file updates made when a restartpoint is running during
+ promotion of a standby server (Kyotaro Horiguchi)
+ </para>
+
+ <para>
+ Previously, when the restartpoint completed it could incorrectly
+ update the last-checkpoint fields of the control file, potentially
+ leading to PANIC and failure to restart if the server crashes before
+ the next normal checkpoint completes.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Amit Kapila <ak...@postgresql.org>
+Branch: master Release: REL_15_BR [f95d53ede] 2022-05-11 11:11:44 +0530
+Branch: REL_14_STABLE Release: REL_14_4 [d6da71fa8] 2022-05-11 10:51:04 +0530
+Branch: REL_13_STABLE [55558df23] 2022-05-11 10:41:24 +0530
+Branch: REL_12_STABLE [f832b5007] 2022-05-11 10:25:56 +0530
+Branch: REL_11_STABLE [87c1dd246] 2022-05-11 10:12:23 +0530
+Branch: REL_10_STABLE [a4015ec03] 2022-05-11 10:01:35 +0530
+-->
+ <para>
+ Prevent triggering of
+ standby's <varname>wal_receiver_timeout</varname> during logical
+ replication of large transactions (Wang Wei, Amit Kapila)
+ </para>
+
+ <para>
+ If a large transaction on the primary server sends no data to the
+ standby (perhaps because no table it changes is published), it was
+ possible for the standby to timeout. Fix that by ensuring we send
+ keepalive messages periodically in such situations.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Fujii Masao <fu...@postgresql.org>
+Branch: master [ee7964776] 2022-07-20 09:56:42 +0900
+Branch: REL_15_STABLE [286793b98] 2022-07-20 09:56:52 +0900
+Branch: REL_14_STABLE [2aedf25eb] 2022-07-20 09:52:11 +0900
+Branch: REL_13_STABLE [5630f39b3] 2022-07-20 09:52:23 +0900
+Branch: REL_12_STABLE [9fa00e312] 2022-07-20 09:52:29 +0900
+Branch: REL_11_STABLE [87e504487] 2022-07-20 09:52:36 +0900
+Branch: REL_10_STABLE [dd831afc4] 2022-07-20 09:52:43 +0900
+-->
+ <para>
+ Disallow nested backup operations in logical replication walsenders
+ (Fujii Masao)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Amit Kapila <ak...@postgresql.org>
+Branch: master Release: REL_15_BR [ac0e2d387] 2022-06-23 09:23:46 +0530
+Branch: REL_14_STABLE [3238b5c33] 2022-06-23 09:20:41 +0530
+Branch: REL_13_STABLE [3a6ef0cdf] 2022-06-23 09:02:16 +0530
+Branch: REL_12_STABLE [9e0d9a24e] 2022-06-23 08:47:15 +0530
+Branch: REL_11_STABLE [ed2a7a6bf] 2022-06-23 08:37:40 +0530
+Branch: REL_10_STABLE [d873b5a5a] 2022-06-23 08:26:56 +0530
+-->
+ <para>
+ Fix memory leak in logical replication subscribers (Hou Zhijie)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Amit Kapila <ak...@postgresql.org>
+Branch: master Release: REL_15_BR [26b3455af] 2022-06-21 08:07:43 +0530
+Branch: REL_14_STABLE [52d5ea9ad] 2022-06-21 08:03:30 +0530
+Branch: REL_13_STABLE [5f113d60e] 2022-06-21 08:05:31 +0530
+Branch: master Release: REL_15_BR [75bfe7434] 2022-06-21 15:39:35 +0530
+Branch: REL_14_STABLE [f0022a77d] 2022-06-21 15:30:36 +0530
+Branch: REL_13_STABLE [419c72715] 2022-06-21 15:12:52 +0530
+-->
+ <para>
+ Fix logical replication's checking of replica identity when the
+ target table is partitioned (Shi Yu, Hou Zhijie)
+ </para>
+
+ <para>
+ The replica identity columns have to be re-identified for the child
+ partition.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Amit Kapila <ak...@postgresql.org>
+Branch: master Release: REL_15_BR [b7658c24c] 2022-06-16 08:45:07 +0530
+Branch: REL_14_STABLE [0980adfd4] 2022-06-16 08:32:10 +0530
+Branch: REL_13_STABLE [1f9a7738e] 2022-06-16 08:24:22 +0530
+Branch: master Release: REL_15_BR [5a97b1325] 2022-06-15 09:52:12 +0530
+Branch: REL_14_STABLE [d457cb4e8] 2022-06-15 09:59:52 +0530
+Branch: REL_13_STABLE [16f5a8da7] 2022-06-15 10:16:35 +0530
+-->
+ <para>
+ Fix failures to update cached schema data in a logical replication
+ subscriber after a schema change on the publisher (Shi Yu, Hou
+ Zhijie)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Amit Kapila <ak...@postgresql.org>
+Branch: REL_10_STABLE [37fd181d6] 2022-06-03 08:15:00 +0530
+-->
+ <para>
+ Ignore heap-rewrite temporary tables for materialized views in
+ logical replication (Euler Taveira)
+ </para>
+
+ <para>
+ A <literal>FOR ALL TABLES</literal> publication will try to publish
+ temporary tables if left to its own devices. There is a heuristic
+ to suppress these, but it failed to cover internal temporary tables
+ created while rewriting a materialized view. This created a risk of
+ <quote>logical replication target relation ... does not
+ exist</quote> failures during <command>REFRESH MATERIALIZED
+ VIEW</command>.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master Release: REL_15_BR [16c80e7d0] 2022-05-31 14:47:44 -0400
+Branch: REL_14_STABLE Release: REL_14_4 [c47a55852] 2022-05-31 14:47:44 -0400
+Branch: REL_13_STABLE [c73748b68] 2022-05-31 14:47:44 -0400
+Branch: REL_12_STABLE [a3faebd6a] 2022-05-31 14:47:44 -0400
+Branch: REL_11_STABLE [ae758e603] 2022-05-31 14:47:44 -0400
+Branch: REL_10_STABLE [2114910ca] 2022-05-31 14:47:44 -0400
+-->
+ <para>
+ Prevent open-file leak when reading an invalid timezone abbreviation
+ file (Kyotaro Horiguchi)
+ </para>
+
+ <para>
+ Such cases could result in harmless warning messages.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Michael Paquier <mi...@paquier.xyz>
+Branch: master Release: REL_15_BR [f1431f3bf] 2022-05-28 12:12:40 +0900
+Branch: REL_14_STABLE Release: REL_14_4 [fe441a031] 2022-05-28 12:12:46 +0900
+Branch: REL_13_STABLE [1e6802990] 2022-05-28 12:12:51 +0900
+Branch: REL_12_STABLE [ae236bf66] 2022-05-28 12:12:55 +0900
+Branch: REL_11_STABLE [c3db8a2e2] 2022-05-28 12:12:58 +0900
+Branch: REL_10_STABLE [1b40ceea2] 2022-05-28 12:13:02 +0900
+-->
+ <para>
+ Allow custom server parameters to have short descriptions that are
+ NULL (Steve Chavez)
+ </para>
+
+ <para>
+ Previously, although extensions could choose to create such
+ settings, some code paths would crash while processing them.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Alvaro Herrera <al...@alvh.no-ip.org>
+Branch: master [e44dae07f] 2022-08-05 18:00:17 +0200
+Branch: REL_15_STABLE [2cff30259] 2022-08-05 18:00:17 +0200
+Branch: REL_14_STABLE [541f41d4f] 2022-08-05 18:00:17 +0200
+Branch: REL_13_STABLE [de31e6f81] 2022-08-05 18:00:17 +0200
+Branch: REL_12_STABLE [49b85e481] 2022-08-05 18:00:17 +0200
+Branch: REL_11_STABLE [39e45d3ce] 2022-08-05 18:00:17 +0200
+Branch: REL_10_STABLE [e797c7a6f] 2022-08-05 18:00:17 +0200
+-->
+ <para>
+ Fix WAL consistency checking logic to correctly
+ handle <literal>BRIN_EVACUATE_PAGE</literal> flags (Haiyang Wang)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Thomas Munro <tm...@postgresql.org>
+Branch: master [eed959a45] 2022-07-11 16:43:29 +1200
+Branch: REL_15_STABLE [53df1e28d] 2022-07-11 16:01:22 +1200
+Branch: REL_14_STABLE [5e7608e81] 2022-07-11 15:47:12 +1200
+Branch: REL_13_STABLE [7cdd0c2d7] 2022-07-11 15:48:54 +1200
+Branch: REL_12_STABLE [4f88dbac2] 2022-07-11 15:51:47 +1200
+Branch: REL_11_STABLE [cd26139a3] 2022-07-11 15:54:24 +1200
+-->
+ <para>
+ Fix erroneous assertion checks in shared hashtable management
+ (Thomas Munro)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Thomas Munro <tm...@postgresql.org>
+Branch: master Release: REL_15_BR [7201cd186] 2022-06-27 11:34:26 +1200
+Branch: REL_14_STABLE [99504ff82] 2022-06-27 11:45:03 +1200
+-->
+ <para>
+ Avoid assertion failure
+ when <varname>min_dynamic_shared_memory</varname> is set to a
+ non-default value (Thomas Munro)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: REL_14_STABLE [604651880] 2022-06-22 12:11:59 -0400
+Branch: REL_13_STABLE [cfc86f987] 2022-06-22 12:12:00 -0400
+Branch: REL_12_STABLE [293f5c5f4] 2022-06-22 12:12:00 -0400
+Branch: REL_11_STABLE [2f6b8c287] 2022-06-22 12:12:00 -0400
+Author: Peter Eisentraut <pe...@eisentraut.org>
+Branch: REL_14_STABLE [8657946d3] 2022-07-18 16:23:48 +0200
+Branch: REL_13_STABLE [b2c8d5661] 2022-07-18 19:20:07 +0200
+Branch: REL_12_STABLE [9af9e2094] 2022-07-18 19:33:46 +0200
+Branch: REL_11_STABLE [6d61aef5d] 2022-07-18 19:38:24 +0200
+-->
+ <para>
+ Arrange to clean up after commit-time errors
+ within <function>SPI_commit()</function>, rather than expecting
+ callers to do that (Peter Eisentraut, Tom Lane)
+ </para>
+
+ <para>
+ Proper cleanup is complicated and requires use of low-level
+ facilities, so it's not surprising that no known caller got it
+ right. This led to misbehaviors when a PL procedure
+ issued <command>COMMIT</command> but a failure occurred (such as a
+ deferred constraint check). To improve matters,
+ redefine <function>SPI_commit()</function> as starting a new
+ transaction, so that it becomes equivalent
+ to <function>SPI_commit_and_chain()</function> except that you get
+ default transaction characteristics instead of preserving the prior
+ transaction's characteristics. To make this somewhat transparent
+ API-wise, redefine <function>SPI_start_transaction()</function> as a
+ no-op. All known callers of <function>SPI_commit()</function>
+ immediately call <function>SPI_start_transaction()</function>, so
+ they will not notice any change. Similar remarks apply
+ to <function>SPI_rollback()</function>.
+ </para>
+
+ <para>
+ Also fix PL/Python, which omitted any handling of such errors at all,
+ resulting in jumping out of the Python interpreter. This is
+ reported to crash Python 3.11. Older Python releases leak some
+ memory but seem okay with it otherwise.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master Release: REL_15_BR [2b65de7fc] 2022-05-26 14:14:05 -0400
+Branch: REL_14_STABLE Release: REL_14_4 [b4be4a082] 2022-05-26 14:14:05 -0400
+Branch: REL_13_STABLE [9e3dbc6fd] 2022-05-26 14:14:05 -0400
+Branch: REL_12_STABLE [01ab9fb7d] 2022-05-26 14:14:05 -0400
+Branch: REL_11_STABLE [a44bc8b8f] 2022-05-26 14:14:05 -0400
+Branch: REL_10_STABLE [ef54a6576] 2022-05-26 14:14:05 -0400
+-->
+ <para>
+ Remove misguided SSL key file ownership check
+ in <application>libpq</application> (Tom Lane)
+ </para>
+
+ <para>
+ In the previous minor releases, we copied the server's permission
+ checking rules for SSL private key files into libpq. But we should
+ not have also copied the server's file-ownership check. While that
+ works in normal use-cases, it can result in an unexpected failure
+ for clients running as root, and perhaps in other cases.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Alvaro Herrera <al...@alvh.no-ip.org>
+Branch: master [054325c5e] 2022-07-05 14:21:20 +0200
+Branch: REL_15_STABLE [93cf9233c] 2022-07-05 14:21:20 +0200
+Branch: REL_14_STABLE [7c1f42612] 2022-07-05 14:21:20 +0200
+Branch: master [e1df03b80] 2022-07-13 12:58:56 +0200
+Branch: REL_15_STABLE [e69093070] 2022-07-13 12:10:03 +0200
+Branch: REL_14_STABLE [9e038d690] 2022-07-13 12:10:03 +0200
+-->
+ <para>
+ Improve <application>libpq</application>'s handling of idle states
+ in pipeline mode (Álvaro Herrera, Kyotaro Horiguchi)
+ </para>
+
+ <para>
+ This fixes <quote>message type 0x33 arrived from server while
+ idle</quote> warnings, as well as possible loss of end-of-query NULL
+ results from <function>PQgetResult()</function>.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master Release: REL_15_BR [6d157e7cb] 2022-06-06 11:20:21 -0400
+Branch: REL_14_STABLE Release: REL_14_4 [a5dbca460] 2022-06-06 11:20:31 -0400
+Branch: REL_13_STABLE [16d68007c] 2022-06-06 11:20:36 -0400
+Branch: REL_12_STABLE [02026cadb] 2022-06-06 11:20:41 -0400
+Branch: REL_11_STABLE [d82ed5b2f] 2022-06-06 11:20:46 -0400
+Branch: REL_10_STABLE [89254606b] 2022-06-06 11:20:52 -0400
+-->
+ <para>
+ Ensure <application>ecpg</application> reports server connection loss
+ sanely (Tom Lane)
+ </para>
+
+ <para>
+ Misprocessing of a libpq-generated error result, such as a report of
+ lost connection, would lead to printing <quote>(null)</quote>
+ instead of a useful error message; or in older releases it would
+ lead to a crash.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master Release: REL_15_BR [ba412c905] 2022-06-14 18:16:46 -0400
+Branch: REL_14_STABLE [7bc21ed8c] 2022-06-14 18:16:46 -0400
+Branch: REL_13_STABLE [12b8fb34a] 2022-06-14 18:16:46 -0400
+Branch: REL_12_STABLE [9a3aab0f2] 2022-06-14 18:16:46 -0400
+Branch: REL_11_STABLE [f7797747f] 2022-06-14 18:16:46 -0400
+Branch: REL_10_STABLE [86258f083] 2022-06-14 18:16:46 -0400
+-->
+ <para>
+ Avoid core dump in <application>ecpglib</application> with
+ unexpected orders of operations (Tom Lane)
+ </para>
+
+ <para>
+ Certain operations such as <command>EXEC SQL PREPARE</command> would
+ crash (rather than reporting an error as expected) if called before
+ establishing any database connection.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Noah Misch <no...@leadboat.com>
+Branch: master [5633836ef] 2022-07-02 13:00:30 -0700
+Branch: REL_15_STABLE [7a28f7cb0] 2022-07-02 13:00:34 -0700
+Branch: REL_14_STABLE [5b94e2bd4] 2022-07-02 13:00:34 -0700
+Branch: REL_13_STABLE [b4d7e92bd] 2022-07-02 13:00:34 -0700
+Branch: REL_12_STABLE [5e0b8f3f4] 2022-07-02 13:00:34 -0700
+Branch: REL_11_STABLE [d68b731a1] 2022-07-02 13:00:35 -0700
+Branch: REL_10_STABLE [12b2a2369] 2022-07-02 13:00:35 -0700
+Branch: master [e2bc24283] 2022-07-02 21:03:19 -0700
+Branch: REL_15_STABLE [8533eb181] 2022-07-02 21:03:22 -0700
+Branch: REL_14_STABLE [463a841d7] 2022-07-02 21:03:22 -0700
+Branch: REL_13_STABLE [97b005f3f] 2022-07-02 21:03:23 -0700
+Branch: REL_12_STABLE [a4240139f] 2022-07-02 21:03:23 -0700
+Branch: REL_11_STABLE [1cad30e3b] 2022-07-02 21:03:24 -0700
+Branch: REL_10_STABLE [f5e4d64bb] 2022-07-02 21:03:24 -0700
+-->
+ <para>
+ In <application>ecpglib</application>, avoid
+ redundant <function>newlocale()</function> calls (Noah Misch)
+ </para>
+
+ <para>
+ Allocate a C locale object once per process when first connecting,
+ rather than creating and freeing locale objects once per query.
+ This mitigates a libc memory leak on AIX, and may offer some
+ performance benefit everywhere.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Thomas Munro <tm...@postgresql.org>
+Branch: master [21267b647] 2022-07-10 16:52:38 +1200
+Branch: REL_15_STABLE [31b485f88] 2022-07-10 16:53:05 +1200
+Branch: REL_14_STABLE [ab7fef0ac] 2022-07-10 16:53:18 +1200
+Branch: REL_13_STABLE [e5b5b4448] 2022-07-10 16:53:39 +1200
+Branch: REL_12_STABLE [09224a35c] 2022-07-10 16:54:09 +1200
+Branch: REL_11_STABLE [21ed12b14] 2022-07-10 16:55:18 +1200
+Branch: REL_10_STABLE [7c5953b7b] 2022-07-10 16:57:04 +1200
+-->
+ <para>
+ In <application>psql</application>'s <command>\watch</command>
+ command, echo a newline after cancellation with control-C
+ (Pavel Stehule)
+ </para>
+
+ <para>
+ This prevents libedit (and possibly also libreadline) from becoming
+ confused about which column the cursor is in.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [09878cdd4] 2022-07-05 13:06:31 -0400
+Branch: REL_15_STABLE [c069f4278] 2022-07-05 13:06:31 -0400
+Branch: REL_14_STABLE [175e60a5e] 2022-07-05 13:06:31 -0400
+Branch: master [08385ed26] 2022-07-05 18:23:33 -0400
+Branch: REL_15_STABLE [c7e21e966] 2022-07-05 18:23:34 -0400
+Branch: REL_14_STABLE [9783413cb] 2022-07-05 18:23:19 -0400
+-->
+ <para>
+ Fix <application>pg_upgrade</application> to detect non-upgradable
+ usages of functions taking <type>anyarray</type> (Justin Pryzby)
+ </para>
+
+ <para>
+ Version 14 changed some built-in functions to take
+ type <type>anycompatiblearray</type> instead
+ of <type>anyarray</type>. While this is mostly transparent,
+ user-defined aggregates and operators built atop these functions
+ have to be declared with exactly matching types. The presence of an
+ object referencing the old signature will
+ cause <application>pg_upgrade</application> to fail, so change it to
+ detect and report such cases before beginning the upgrade.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Michael Paquier <mi...@paquier.xyz>
+Branch: master [8b1ec7d29] 2022-08-01 16:38:23 +0900
+Branch: REL_15_STABLE [07abcd9ab] 2022-08-01 16:39:16 +0900
+Branch: REL_14_STABLE [523926dea] 2022-08-01 16:39:27 +0900
+Branch: REL_13_STABLE [aadaaeff4] 2022-08-01 16:39:30 +0900
+Branch: REL_12_STABLE [24872bbf9] 2022-08-01 16:39:33 +0900
+-->
+ <para>
+ Fix possible report of wrong error condition
+ after <function>clone()</function> failure
+ in <application>pg_upgrade</application>
+ with <option>--clone</option> option (Justin Pryzby)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [c67c2e2a2] 2022-08-02 18:05:38 -0400
+Branch: REL_15_STABLE [82ebc70d1] 2022-08-02 18:05:34 -0400
+Branch: REL_14_STABLE [17fd203b4] 2022-08-02 18:05:34 -0400
+Branch: REL_13_STABLE [6b67db10c] 2022-08-02 18:05:34 -0400
+Branch: REL_12_STABLE [6608a4305] 2022-08-02 18:05:34 -0400
+Branch: REL_11_STABLE [06f6a07ba] 2022-08-02 18:05:34 -0400
+Branch: REL_10_STABLE [dd414bf4e] 2022-08-02 18:05:34 -0400
+-->
+ <para>
+ Fix <filename>contrib/pg_stat_statements</filename> to avoid
+ problems with very large query-text files on 32-bit platforms
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Etsuro Fujita <ef...@postgresql.org>
+Branch: master [82593b9a3] 2022-08-05 17:15:00 +0900
+Branch: REL_15_STABLE [1d49db259] 2022-08-05 17:15:01 +0900
+Branch: REL_14_STABLE [4a9bc2e0f] 2022-08-05 17:15:03 +0900
+-->
+ <para>
+ In <filename>contrib/postgres_fdw</filename>, prevent batch
+ insertion when there are <literal>WITH CHECK OPTION</literal>
+ constraints (Etsuro Fujita)
+ </para>
+
+ <para>
+ Such constraints cannot be checked properly if more than one row is
+ inserted at a time.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Fujii Masao <fu...@postgresql.org>
+Branch: master [44ccdce51] 2022-07-22 11:59:38 +0900
+Branch: REL_15_STABLE [63a8c689b] 2022-07-22 12:01:31 +0900
+Branch: REL_14_STABLE [169d50ba3] 2022-07-22 12:01:38 +0900
+-->
+ <para>
+ Fix <filename>contrib/postgres_fdw</filename> to detect failure to
+ send an asynchronous data fetch query (Fujii Masao)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master [0a7ccee8f] 2022-07-17 17:27:50 -0400
+Branch: REL_15_STABLE [b8032f481] 2022-07-17 17:27:50 -0400
+Branch: REL_14_STABLE [810bcbd38] 2022-07-17 17:27:50 -0400
+Branch: REL_13_STABLE [6230bd7df] 2022-07-17 17:27:50 -0400
+Branch: REL_12_STABLE [288e499ba] 2022-07-17 17:27:50 -0400
+Branch: REL_11_STABLE [94bcb48ab] 2022-07-17 17:27:50 -0400
+Branch: REL_10_STABLE [26c9e1bd8] 2022-07-17 17:27:51 -0400
+-->
+ <para>
+ Ensure that <filename>contrib/postgres_fdw</filename> sends
+ constants of <type>regconfig</type> and other <type>reg*</type>
+ types with proper schema qualification (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Thomas Munro <tm...@postgresql.org>
+Branch: master [4518c798b] 2022-07-14 18:01:27 +1200
+Branch: REL_15_STABLE [c4a617ea1] 2022-07-14 18:00:58 +1200
+Branch: REL_14_STABLE [2019e6ecf] 2022-07-14 17:48:32 +1200
+Branch: REL_13_STABLE [e73fe6e82] 2022-07-14 14:32:48 +1200
+Branch: REL_12_STABLE [ff78bf796] 2022-07-14 14:26:49 +1200
+Branch: REL_11_STABLE [39683c69a] 2022-07-14 14:23:03 +1200
+Branch: REL_10_STABLE [53cfe403c] 2022-07-14 10:50:13 +1200
+Branch: master [80845b7c0] 2022-07-15 02:00:09 +1200
+Branch: REL_15_STABLE [a715c2004] 2022-07-15 02:00:35 +1200
+Branch: REL_14_STABLE [838364559] 2022-07-15 02:02:28 +1200
+Branch: REL_13_STABLE [17aa39da5] 2022-07-15 02:04:53 +1200
+Branch: REL_12_STABLE [a05f40ef8] 2022-07-15 02:06:01 +1200
+Branch: REL_11_STABLE [74a9ee034] 2022-07-15 02:07:15 +1200
+Branch: REL_10_STABLE [e26024bea] 2022-07-15 02:08:27 +1200
+Branch: master [3b8d23a3e] 2022-07-16 12:22:42 +1200
+Branch: REL_15_STABLE [91377a455] 2022-07-16 12:23:03 +1200
+Branch: REL_14_STABLE [c412c60b9] 2022-07-16 12:23:14 +1200
+Branch: REL_13_STABLE [c75b6b454] 2022-07-16 12:23:24 +1200
+Branch: REL_12_STABLE [1661c40b9] 2022-07-16 12:23:34 +1200
+Branch: REL_11_STABLE [3f2344d4a] 2022-07-16 12:23:43 +1200
+Branch: REL_10_STABLE [d3b0884c0] 2022-07-16 12:23:52 +1200
+-->
+ <para>
+ Block signals while allocating dynamic shared memory on Linux
+ (Thomas Munro)
+ </para>
+
+ <para>
+ This avoids problems when a signal
+ interrupts <function>posix_fallocate()</function>.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Thomas Munro <tm...@postgresql.org>
+Branch: master [389869af5] 2022-07-01 14:17:54 +1200
+Branch: REL_15_STABLE [fef8c7a0c] 2022-07-01 13:15:17 +1200
+Branch: REL_14_STABLE [fb81a93a6] 2022-07-01 13:16:27 +1200
+Branch: REL_13_STABLE [b436047dc] 2022-07-01 14:03:48 +1200
+Branch: REL_12_STABLE [f7b69b1e3] 2022-07-01 13:26:50 +1200
+Branch: REL_11_STABLE [facfd0467] 2022-07-01 13:21:28 +1200
+Branch: REL_10_STABLE [22b9afaf5] 2022-07-01 13:19:06 +1200
+-->
+ <para>
+ Detect unexpected <literal>EEXIST</literal> error
+ from <function>shm_open()</function> (Thomas Munro)
+ </para>
+
+ <para>
+ This avoids a possible crash on Solaris.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Thomas Munro <tm...@postgresql.org>
+Branch: master Release: REL_15_BR [3ab4fc5dc] 2022-06-26 10:55:21 +1200
+Branch: REL_14_STABLE [e086b5538] 2022-06-26 11:00:04 +1200
+-->
+ <para>
+ Avoid using <function>signalfd()</function>
+ on <productname>illumos</productname> systems (Thomas Munro)
+ </para>
+
+ <para>
+ This appears to trigger hangs and kernel panics, so avoid the
+ function until a fix is available.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master Release: REL_15_BR [eb39610f8] 2022-06-01 16:15:47 -0400
+Branch: REL_14_STABLE Release: REL_14_4 [1072e4c45] 2022-06-01 16:15:47 -0400
+Branch: REL_13_STABLE [eeac7dd9f] 2022-06-01 16:15:47 -0400
+Branch: REL_12_STABLE [c08538734] 2022-06-01 16:15:47 -0400
+Branch: REL_11_STABLE [b5265196e] 2022-06-01 16:15:47 -0400
+Branch: REL_10_STABLE [d5e1d5ed9] 2022-06-01 16:15:47 -0400
+Branch: REL9_6_STABLE [d4c161842] 2022-06-01 16:15:47 -0400
+Branch: REL9_5_STABLE [9fdeae848] 2022-06-01 16:15:47 -0400
+Branch: REL9_4_STABLE [b53780e1b] 2022-06-01 16:15:47 -0400
+Branch: REL9_3_STABLE [a3b685fdd] 2022-06-01 16:15:47 -0400
+Branch: REL9_2_STABLE [6f9ea6cf3] 2022-06-01 16:15:47 -0400
+-->
+ <para>
+ Adjust PL/Perl test case so it will work under Perl 5.36
+ (Dagfinn Ilmari Mannsåker)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tg...@sss.pgh.pa.us>
+Branch: master Release: REL_15_BR [aff45c879] 2022-05-10 18:42:02 -0400
+Branch: REL_14_STABLE Release: REL_14_4 [12736e7dc] 2022-05-10 18:42:02 -0400
+Branch: REL_13_STABLE [af9b96767] 2022-05-10 18:42:02 -0400
+Branch: REL_12_STABLE [8ed13fb93] 2022-05-10 18:42:02 -0400
+Branch: REL_11_STABLE [36d76da81] 2022-05-10 18:42:02 -0400
+Branch: REL_10_STABLE [c61f36d99] 2022-05-10 18:42:02 -0400
+-->
+ <para>
+ Avoid incorrectly using an
+ out-of-date <application>libldap_r</application> library when
+ multiple <productname>OpenLDAP</productname> installations are
+ present while building <productname>PostgreSQL</productname>
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
<sect1 id="release-14-4">
<title>Release 14.4</title>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 01/12: Fix trim_array() for zero-dimensional array argument.
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 59678645105a3cba0944b44c249857a644c4507b
Author: Tom Lane <tg...@sss.pgh.pa.us>
AuthorDate: Sun Jul 31 13:43:17 2022 -0400
Fix trim_array() for zero-dimensional array argument.
The code tried to access ARR_DIMS(v)[0] and ARR_LBOUND(v)[0]
whether or not those values exist. This made the range check
on the "n" argument unstable --- it might or might not fail, and
if it did it would report garbage for the allowed upper limit.
These bogus accesses would probably annoy Valgrind, and if you
were very unlucky even lead to SIGSEGV.
Report and fix by Martin Kalcher. Back-patch to v14 where this
function was added.
Discussion: https://postgr.es/m/baaeb413-b8a8-4656-5757-ef347e5ec11f@aboutsource.net
---
src/backend/utils/adt/arrayfuncs.c | 9 ++++++---
src/test/regress/expected/arrays.out | 2 ++
src/test/regress/sql/arrays.sql | 1 +
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c
index 26cd7458961..6d00be72b16 100644
--- a/src/backend/utils/adt/arrayfuncs.c
+++ b/src/backend/utils/adt/arrayfuncs.c
@@ -6802,7 +6802,7 @@ trim_array(PG_FUNCTION_ARGS)
{
ArrayType *v = PG_GETARG_ARRAYTYPE_P(0);
int n = PG_GETARG_INT32(1);
- int array_length = ARR_DIMS(v)[0];
+ int array_length = (ARR_NDIM(v) > 0) ? ARR_DIMS(v)[0] : 0;
int16 elmlen;
bool elmbyval;
char elmalign;
@@ -6822,8 +6822,11 @@ trim_array(PG_FUNCTION_ARGS)
/* Set all the bounds as unprovided except the first upper bound */
memset(lowerProvided, false, sizeof(lowerProvided));
memset(upperProvided, false, sizeof(upperProvided));
- upper[0] = ARR_LBOUND(v)[0] + array_length - n - 1;
- upperProvided[0] = true;
+ if (ARR_NDIM(v) > 0)
+ {
+ upper[0] = ARR_LBOUND(v)[0] + array_length - n - 1;
+ upperProvided[0] = true;
+ }
/* Fetch the needed information about the element type */
get_typlenbyvalalign(ARR_ELEMTYPE(v), &elmlen, &elmbyval, &elmalign);
diff --git a/src/test/regress/expected/arrays.out b/src/test/regress/expected/arrays.out
index a8686405408..d6a8f8f8545 100644
--- a/src/test/regress/expected/arrays.out
+++ b/src/test/regress/expected/arrays.out
@@ -2586,3 +2586,5 @@ SELECT trim_array(ARRAY[1, 2, 3], -1); -- fail
ERROR: number of elements to trim must be between 0 and 3
SELECT trim_array(ARRAY[1, 2, 3], 10); -- fail
ERROR: number of elements to trim must be between 0 and 3
+SELECT trim_array(ARRAY[]::int[], 1); -- fail
+ERROR: number of elements to trim must be between 0 and 0
diff --git a/src/test/regress/sql/arrays.sql b/src/test/regress/sql/arrays.sql
index d10278e32f0..cefe5b05b3b 100644
--- a/src/test/regress/sql/arrays.sql
+++ b/src/test/regress/sql/arrays.sql
@@ -875,3 +875,4 @@ FROM
SELECT trim_array(ARRAY[1, 2, 3], -1); -- fail
SELECT trim_array(ARRAY[1, 2, 3], 10); -- fail
+SELECT trim_array(ARRAY[]::int[], 1); -- fail
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 03/12: Clarify DROP EXTENSION docs regarding explicitly dependent routines
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reshke pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 89690e41d26539adfb75910d5261c6facfd1d769
Author: John Naylor <jo...@postgresql.org>
AuthorDate: Thu Aug 4 15:29:25 2022 +0700
Clarify DROP EXTENSION docs regarding explicitly dependent routines
Per suggestion from Robert Haas
Backpatch to v14
Discussion: https://www.postgresql.org/message-id/CA%2BTgmoZ1QvHquYHLkMy1oHKqz4-E7QQctj6e0ocq_GP1B5%2B9bA%40mail.gmail.com
---
doc/src/sgml/ref/drop_extension.sgml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/doc/src/sgml/ref/drop_extension.sgml b/doc/src/sgml/ref/drop_extension.sgml
index c01ddace84c..4ea20131c79 100644
--- a/doc/src/sgml/ref/drop_extension.sgml
+++ b/doc/src/sgml/ref/drop_extension.sgml
@@ -32,7 +32,8 @@ DROP EXTENSION [ IF EXISTS ] <replaceable class="parameter">name</replaceable> [
<command>DROP EXTENSION</command> removes extensions from the database.
Dropping an extension causes its component objects, and other explicitly
dependent routines (see <xref linkend="sql-alterroutine"/>,
- the depends on extension action), to be dropped as well.
+ the <literal>DEPENDS ON EXTENSION <replaceable>extension_name</replaceable>
+ </literal> action), to be dropped as well.
</para>
<para>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org