agora inbox for pgsql-hackers@postgresql.orghelp / color / mirror / Atom feed
[PATCH] Asymmetric partitionwise join. 329+ messages / 3 participants [nested] [flat]
* [PATCH] Asymmetric partitionwise join. @ 2021-04-02 06:02 Andrey Lepikhov <a.lepikhov@postgrespro.ru> 0 siblings, 0 replies; 329+ messages in thread From: Andrey Lepikhov @ 2021-04-02 06:02 UTC (permalink / raw) Teach optimizer to consider partitionwise join of non-partitioned table with each partition of partitioned table. This technique cause changes of 'reparameterize by child' machinery. --- src/backend/optimizer/path/joinpath.c | 9 + src/backend/optimizer/path/joinrels.c | 151 ++++++++++++++ src/backend/optimizer/util/appendinfo.c | 28 ++- src/backend/optimizer/util/pathnode.c | 9 +- src/backend/optimizer/util/relnode.c | 14 +- src/include/optimizer/paths.h | 7 +- src/test/regress/expected/partition_join.out | 209 +++++++++++++++++++ src/test/regress/sql/partition_join.sql | 99 +++++++++ 8 files changed, 509 insertions(+), 17 deletions(-) diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c index e9b6968b1d..6ba6d32ae4 100644 --- a/src/backend/optimizer/path/joinpath.c +++ b/src/backend/optimizer/path/joinpath.c @@ -335,6 +335,15 @@ add_paths_to_joinrel(PlannerInfo *root, if (set_join_pathlist_hook) set_join_pathlist_hook(root, joinrel, outerrel, innerrel, jointype, &extra); + + /* + * 7. If outer relation is delivered from partition-tables, consider + * distributing inner relation to every partition-leaf prior to + * append these leafs. + */ + try_asymmetric_partitionwise_join(root, joinrel, + outerrel, innerrel, + jointype, &extra); } /* diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c index 0dbe2ac726..6f900475bb 100644 --- a/src/backend/optimizer/path/joinrels.c +++ b/src/backend/optimizer/path/joinrels.c @@ -16,6 +16,7 @@ #include "miscadmin.h" #include "optimizer/appendinfo.h" +#include "optimizer/cost.h" #include "optimizer/joininfo.h" #include "optimizer/pathnode.h" #include "optimizer/paths.h" @@ -1551,6 +1552,156 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2, } } +/* + * Build RelOptInfo on JOIN of each partition of the outer relation and the inner + * relation. Return List of such RelOptInfo's. Return NIL, if at least one of + * these JOINs are impossible to build. + */ +static List * +extract_asymmetric_partitionwise_subjoin(PlannerInfo *root, + RelOptInfo *joinrel, + AppendPath *append_path, + RelOptInfo *inner_rel, + JoinType jointype, + JoinPathExtraData *extra) +{ + List *result = NIL; + ListCell *lc; + + foreach (lc, append_path->subpaths) + { + Path *child_path = lfirst(lc); + RelOptInfo *child_rel = child_path->parent; + Relids child_join_relids; + RelOptInfo *child_join_rel; + SpecialJoinInfo *child_sjinfo; + List *child_restrictlist; + AppendRelInfo **appinfos; + int nappinfos; + + child_join_relids = bms_union(child_rel->relids, + inner_rel->relids); + appinfos = find_appinfos_by_relids(root, child_join_relids, + &nappinfos); + child_sjinfo = build_child_join_sjinfo(root, extra->sjinfo, + child_rel->relids, + inner_rel->relids); + child_restrictlist = (List *) + adjust_appendrel_attrs(root, (Node *)extra->restrictlist, + nappinfos, appinfos); + pfree(appinfos); + + child_join_rel = find_join_rel(root, child_join_relids); + if (!child_join_rel) + { + child_join_rel = build_child_join_rel(root, + child_rel, + inner_rel, + joinrel, + child_restrictlist, + child_sjinfo, + jointype); + if (!child_join_rel) + { + /* + * If can't build JOIN between inner relation and one of the outer + * partitions - return immediately. + */ + return NIL; + } + } + else + { + /* + * TODO: + * Can't imagine situation when join relation already exists. But in + * the 'partition_join' regression test it happens. + * It may be an indicator of possible problems. + */ + } + + populate_joinrel_with_paths(root, + child_rel, + inner_rel, + child_join_rel, + child_sjinfo, + child_restrictlist); + + /* Give up if asymmetric partition-wise join is not available */ + if (child_join_rel->pathlist == NIL) + return NIL; + + set_cheapest(child_join_rel); + result = lappend(result, child_join_rel); + } + return result; +} + +void +try_asymmetric_partitionwise_join(PlannerInfo *root, + RelOptInfo *joinrel, + RelOptInfo *outer_rel, + RelOptInfo *inner_rel, + JoinType jointype, + JoinPathExtraData *extra) +{ + ListCell *lc; + + if (!enable_partitionwise_join) + return; + + if (IS_OTHER_REL(outer_rel) || IS_OTHER_REL(inner_rel)) + return; + + if (jointype != JOIN_INNER && jointype != JOIN_LEFT) + return; + + foreach (lc, outer_rel->pathlist) + { + AppendPath *append_path = lfirst(lc); + + /* + * MEMO: We assume this pathlist keeps at least one AppendPath that + * represents partitioned table-scan, symmetric or asymmetric + * partition-wise join. It is not correct right now, however, a hook + * on add_path() to give additional decision for path removel allows + * to retain this kind of AppendPath, regardless of its cost. + */ + if (IsA(append_path, AppendPath)) + { + List **join_rel_level_saved; + List *live_childrels = NIL; + + join_rel_level_saved = root->join_rel_level; + PG_TRY(); + { + /* temporary disables "dynamic programming" algorithm */ + root->join_rel_level = NULL; + + live_childrels = + extract_asymmetric_partitionwise_subjoin(root, + joinrel, + append_path, + inner_rel, + jointype, + extra); + } + PG_CATCH(); + { + root->join_rel_level = join_rel_level_saved; + PG_RE_THROW(); + } + PG_END_TRY(); + root->join_rel_level = join_rel_level_saved; + + if (live_childrels != NIL) + add_paths_to_append_rel(root, joinrel, live_childrels); + + break; + } + } +} + /* * Construct the SpecialJoinInfo for a child-join by translating * SpecialJoinInfo for the join between parents. left_relids and right_relids diff --git a/src/backend/optimizer/util/appendinfo.c b/src/backend/optimizer/util/appendinfo.c index af46f581ac..be4624b619 100644 --- a/src/backend/optimizer/util/appendinfo.c +++ b/src/backend/optimizer/util/appendinfo.c @@ -202,7 +202,9 @@ adjust_appendrel_attrs(PlannerInfo *root, Node *node, int nappinfos, context.appinfos = appinfos; /* If there's nothing to adjust, don't call this function. */ - Assert(nappinfos >= 1 && appinfos != NULL); + /* If there's nothing to adjust, just return a duplication */ + if (nappinfos == 0) + return copyObject(node); /* Should never be translating a Query tree. */ Assert(node == NULL || !IsA(node, Query)); @@ -494,8 +496,6 @@ adjust_appendrel_attrs_multilevel(PlannerInfo *root, Node *node, int nappinfos; int cnt; - Assert(bms_num_members(child_relids) == bms_num_members(top_parent_relids)); - appinfos = find_appinfos_by_relids(root, child_relids, &nappinfos); /* Construct relids set for the immediate parent of given child. */ @@ -506,8 +506,13 @@ adjust_appendrel_attrs_multilevel(PlannerInfo *root, Node *node, parent_relids = bms_add_member(parent_relids, appinfo->parent_relid); } - /* Recurse if immediate parent is not the top parent. */ - if (!bms_equal(parent_relids, top_parent_relids)) + /* + * Recurse if immediate parent is not the top parent. Keep in mind that in a + * case of asymmetric JOIN top_parent_relids can contain relids which aren't + * part of an append node. + */ + if (!bms_equal(parent_relids, top_parent_relids) && + !bms_is_subset(parent_relids, top_parent_relids)) node = adjust_appendrel_attrs_multilevel(root, node, parent_relids, top_parent_relids); @@ -565,6 +570,7 @@ adjust_child_relids_multilevel(PlannerInfo *root, Relids relids, AppendRelInfo **appinfos; int nappinfos; Relids parent_relids = NULL; + Relids normal_relids = NULL; Relids result; Relids tmp_result = NULL; int cnt; @@ -579,12 +585,17 @@ adjust_child_relids_multilevel(PlannerInfo *root, Relids relids, appinfos = find_appinfos_by_relids(root, child_relids, &nappinfos); /* Construct relids set for the immediate parent of the given child. */ + normal_relids = bms_copy(child_relids); for (cnt = 0; cnt < nappinfos; cnt++) { AppendRelInfo *appinfo = appinfos[cnt]; parent_relids = bms_add_member(parent_relids, appinfo->parent_relid); + normal_relids = bms_del_member(normal_relids, appinfo->child_relid); } + parent_relids = bms_union(parent_relids, normal_relids); + if (normal_relids) + bms_free(normal_relids); /* Recurse if immediate parent is not the top parent. */ if (!bms_equal(parent_relids, top_parent_relids)) @@ -715,11 +726,11 @@ AppendRelInfo ** find_appinfos_by_relids(PlannerInfo *root, Relids relids, int *nappinfos) { AppendRelInfo **appinfos; + int nrooms = bms_num_members(relids); int cnt = 0; int i; - *nappinfos = bms_num_members(relids); - appinfos = (AppendRelInfo **) palloc(sizeof(AppendRelInfo *) * *nappinfos); + appinfos = (AppendRelInfo **) palloc(sizeof(AppendRelInfo *) * nrooms); i = -1; while ((i = bms_next_member(relids, i)) >= 0) @@ -727,10 +738,11 @@ find_appinfos_by_relids(PlannerInfo *root, Relids relids, int *nappinfos) AppendRelInfo *appinfo = root->append_rel_array[i]; if (!appinfo) - elog(ERROR, "child rel %d not found in append_rel_array", i); + continue; appinfos[cnt++] = appinfo; } + *nappinfos = cnt; return appinfos; } diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index b248b038e0..73cfb4748d 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -4209,7 +4209,14 @@ do { \ MemoryContextSwitchTo(oldcontext); } - bms_free(required_outer); + + /* + * If adjust_child_relids_multilevel don't do replacements it returns + * the original set, not a copy. It is possible in the case of asymmetric + * JOIN and child_rel->relids contains relids only of plane relations. + */ + if (required_outer != old_ppi->ppi_req_outer) + bms_free(required_outer); new_path->param_info = new_ppi; diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index e105a4d5f1..f98a82e725 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -790,11 +790,8 @@ build_child_join_rel(PlannerInfo *root, RelOptInfo *outer_rel, AppendRelInfo **appinfos; int nappinfos; - /* Only joins between "other" relations land here. */ - Assert(IS_OTHER_REL(outer_rel) && IS_OTHER_REL(inner_rel)); - - /* The parent joinrel should have consider_partitionwise_join set. */ - Assert(parent_joinrel->consider_partitionwise_join); + /* Either of relations must be "other" relation at least. */ + Assert(IS_OTHER_REL(outer_rel) || IS_OTHER_REL(inner_rel)); joinrel->reloptkind = RELOPT_OTHER_JOINREL; joinrel->relids = bms_union(outer_rel->relids, inner_rel->relids); @@ -851,8 +848,11 @@ build_child_join_rel(PlannerInfo *root, RelOptInfo *outer_rel, joinrel->partexprs = NULL; joinrel->nullable_partexprs = NULL; - joinrel->top_parent_relids = bms_union(outer_rel->top_parent_relids, - inner_rel->top_parent_relids); + joinrel->top_parent_relids = + bms_union(IS_OTHER_REL(outer_rel) ? + outer_rel->top_parent_relids : outer_rel->relids, + IS_OTHER_REL(inner_rel) ? + inner_rel->top_parent_relids : inner_rel->relids); /* Compute information relevant to foreign relations. */ set_foreign_rel_properties(joinrel, outer_rel, inner_rel); diff --git a/src/include/optimizer/paths.h b/src/include/optimizer/paths.h index 035d3e1206..d64aa37f80 100644 --- a/src/include/optimizer/paths.h +++ b/src/include/optimizer/paths.h @@ -109,7 +109,12 @@ extern bool have_join_order_restriction(PlannerInfo *root, extern bool have_dangerous_phv(PlannerInfo *root, Relids outer_relids, Relids inner_params); extern void mark_dummy_rel(RelOptInfo *rel); - +extern void try_asymmetric_partitionwise_join(PlannerInfo *root, + RelOptInfo *joinrel, + RelOptInfo *outer_rel, + RelOptInfo *inner_rel, + JoinType jointype, + JoinPathExtraData *extra); /* * equivclass.c * routines for managing EquivalenceClasses diff --git a/src/test/regress/expected/partition_join.out b/src/test/regress/expected/partition_join.out index 27f7525b3e..2bc7ad70d9 100644 --- a/src/test/regress/expected/partition_join.out +++ b/src/test/regress/expected/partition_join.out @@ -2320,6 +2320,215 @@ SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = 375 | 0375 | 375 | 0375 (8 rows) +-- +-- For asymmetric partition-wise join +-- +CREATE TABLE prt5 (hkey int, a int, b int) PARTITION BY HASH(hkey); +CREATE TABLE prt5_p0 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 0); +CREATE TABLE prt5_p1 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 1); +CREATE TABLE prt5_p2 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 2); +CREATE TABLE t5_1 (aid int, alabel text); +CREATE TABLE t5_2 (bid int, blabel text); +INSERT INTO prt5 (SELECT x, (1000.0 * random())::int, + (1000.0 * random())::int + FROM generate_series(1,1000000) x); +INSERT INTO t5_1 (SELECT x, md5(x::text) FROM generate_series(-200, 800) x); +INSERT INTO t5_2 (SELECT x, md5(x::text) FROM generate_series(-200, 800) x); +VACUUM ANALYZE prt5; +VACUUM ANALYZE t5_1; +VACUUM ANALYZE t5_2; +SET max_parallel_workers_per_gather = 0; +EXPLAIN (COSTS OFF) +SELECT * + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +------------------------------------------------------- + Append + -> Hash Join + Hash Cond: (prt5_1.a = t5_1.aid) + -> Seq Scan on prt5_p0 prt5_1 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) + -> Hash Join + Hash Cond: (prt5_2.a = t5_1.aid) + -> Seq Scan on prt5_p1 prt5_2 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) + -> Hash Join + Hash Cond: (prt5_3.a = t5_1.aid) + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) +(19 rows) + +EXPLAIN (COSTS OFF) +SELECT * + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + QUERY PLAN +------------------------------------------------------------ + Append + -> Hash Join + Hash Cond: (prt5_1.a = t5_1.aid) + -> Hash Join + Hash Cond: (prt5_1.b = t5_2.bid) + -> Seq Scan on prt5_p0 prt5_1 + -> Hash + -> Seq Scan on t5_2 + Filter: (blabel ~~ '%cd%'::text) + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%ab%'::text) + -> Hash Join + Hash Cond: (prt5_2.a = t5_1.aid) + -> Hash Join + Hash Cond: (prt5_2.b = t5_2.bid) + -> Seq Scan on prt5_p1 prt5_2 + -> Hash + -> Seq Scan on t5_2 + Filter: (blabel ~~ '%cd%'::text) + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%ab%'::text) + -> Hash Join + Hash Cond: (prt5_3.a = t5_1.aid) + -> Hash Join + Hash Cond: (prt5_3.b = t5_2.bid) + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_2 + Filter: (blabel ~~ '%cd%'::text) + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%ab%'::text) +(34 rows) + +-- unable to extract non-partitioned right relation +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 RIGHT JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +----------------------------------------------- + Hash Right Join + Hash Cond: (prt5.a = t5_1.aid) + Join Filter: (t5_1.alabel ~~ '%abc%'::text) + -> Append + -> Seq Scan on prt5_p0 prt5_1 + -> Seq Scan on prt5_p1 prt5_2 + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 +(9 rows) + +-- left side can be extracted, but no cost benefit +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 LEFT JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +------------------------------------------------- + Hash Left Join + Hash Cond: (prt5.a = t5_1.aid) + -> Append + -> Seq Scan on prt5_p0 prt5_1 + -> Seq Scan on prt5_p1 prt5_2 + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) +(9 rows) + +-- validation of the results with/without asymmetric partition-wise join +SELECT * INTO pg_temp.result01a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; +SELECT * INTO pg_temp.result02a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; +SET enable_partitionwise_join = off; +SELECT * INTO pg_temp.result01b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; +SELECT * INTO pg_temp.result02b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; +SELECT * FROM pg_temp.result01a EXCEPT SELECT * FROM pg_temp.result01b; + hkey | a | b | aid | alabel +------+---+---+-----+-------- +(0 rows) + +SELECT * FROM pg_temp.result02a EXCEPT SELECT * FROM pg_temp.result02b; + hkey | a | b | aid | alabel | bid | blabel +------+---+---+-----+--------+-----+-------- +(0 rows) + +RESET max_parallel_workers_per_gather; +SET enable_partitionwise_join = true; +-- Parameterized path examples. +CREATE TABLE prta (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prta1 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prta2 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prta1 (id); +CREATE UNIQUE INDEX ON prta2 (id); +INSERT INTO prta (id, payload) + (SELECT *, ('abc' || id)::text AS payload + FROM generate_series(1,1) AS id); +CREATE TABLE prtb (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prtb1 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prtb2 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prtb1 (id); +CREATE UNIQUE INDEX ON prtb2 (id); +INSERT INTO prtb (id, payload) + (SELECT *, ('def' || id)::text AS payload + FROM generate_series(1,1000) AS id); +CREATE TABLE e (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE e1 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE e2 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 1); +INSERT INTO e (id, payload) + (SELECT *, ('ghi' || id)::text AS payload + FROM generate_series(1,1000) AS id); +CREATE UNIQUE INDEX ON e1 (id); +CREATE UNIQUE INDEX ON e2 (id); +ANALYZE prta,prtb,e; +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb WHERE prta.id=prtb.id; + QUERY PLAN +----------------------------------------------------------- + Append + -> Nested Loop + -> Seq Scan on prta1 prta_1 + -> Index Scan using prtb1_id_idx on prtb1 prtb_1 + Index Cond: (id = prta_1.id) + -> Nested Loop + -> Seq Scan on prta2 prta_2 + -> Index Scan using prtb2_id_idx on prtb2 prtb_2 + Index Cond: (id = prta_2.id) +(9 rows) + +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb,e WHERE prta.id=prtb.id AND prta.id=e.id; + QUERY PLAN +----------------------------------------------------------------- + Append + -> Nested Loop + Join Filter: (prta_1.id = e_1.id) + -> Nested Loop + -> Seq Scan on prta1 prta_1 + -> Index Scan using prtb1_id_idx on prtb1 prtb_1 + Index Cond: (id = prta_1.id) + -> Index Scan using e1_id_idx on e1 e_1 + Index Cond: (id = prtb_1.id) + -> Nested Loop + Join Filter: (prta_2.id = e_2.id) + -> Nested Loop + -> Seq Scan on prta2 prta_2 + -> Index Scan using prtb2_id_idx on prtb2 prtb_2 + Index Cond: (id = prta_2.id) + -> Index Scan using e2_id_idx on e2 e_2 + Index Cond: (id = prtb_2.id) +(17 rows) + -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; diff --git a/src/test/regress/sql/partition_join.sql b/src/test/regress/sql/partition_join.sql index d97b5b69ff..c206fd736a 100644 --- a/src/test/regress/sql/partition_join.sql +++ b/src/test/regress/sql/partition_join.sql @@ -536,6 +536,105 @@ EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; +-- +-- For asymmetric partition-wise join +-- +CREATE TABLE prt5 (hkey int, a int, b int) PARTITION BY HASH(hkey); +CREATE TABLE prt5_p0 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 0); +CREATE TABLE prt5_p1 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 1); +CREATE TABLE prt5_p2 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 2); +CREATE TABLE t5_1 (aid int, alabel text); +CREATE TABLE t5_2 (bid int, blabel text); + +INSERT INTO prt5 (SELECT x, (1000.0 * random())::int, + (1000.0 * random())::int + FROM generate_series(1,1000000) x); +INSERT INTO t5_1 (SELECT x, md5(x::text) FROM generate_series(-200, 800) x); +INSERT INTO t5_2 (SELECT x, md5(x::text) FROM generate_series(-200, 800) x); + +VACUUM ANALYZE prt5; +VACUUM ANALYZE t5_1; +VACUUM ANALYZE t5_2; + +SET max_parallel_workers_per_gather = 0; +EXPLAIN (COSTS OFF) +SELECT * + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +EXPLAIN (COSTS OFF) +SELECT * + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + +-- unable to extract non-partitioned right relation +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 RIGHT JOIN t5_1 ON a = aid AND alabel like '%abc%'; +-- left side can be extracted, but no cost benefit +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 LEFT JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +-- validation of the results with/without asymmetric partition-wise join +SELECT * INTO pg_temp.result01a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +SELECT * INTO pg_temp.result02a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + +SET enable_partitionwise_join = off; + +SELECT * INTO pg_temp.result01b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +SELECT * INTO pg_temp.result02b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + +SELECT * FROM pg_temp.result01a EXCEPT SELECT * FROM pg_temp.result01b; +SELECT * FROM pg_temp.result02a EXCEPT SELECT * FROM pg_temp.result02b; + +RESET max_parallel_workers_per_gather; +SET enable_partitionwise_join = true; + +-- Parameterized path examples. +CREATE TABLE prta (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prta1 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prta2 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prta1 (id); +CREATE UNIQUE INDEX ON prta2 (id); +INSERT INTO prta (id, payload) + (SELECT *, ('abc' || id)::text AS payload + FROM generate_series(1,1) AS id); + +CREATE TABLE prtb (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prtb1 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prtb2 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prtb1 (id); +CREATE UNIQUE INDEX ON prtb2 (id); +INSERT INTO prtb (id, payload) + (SELECT *, ('def' || id)::text AS payload + FROM generate_series(1,1000) AS id); + +CREATE TABLE e (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE e1 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE e2 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 1); +INSERT INTO e (id, payload) + (SELECT *, ('ghi' || id)::text AS payload + FROM generate_series(1,1000) AS id); +CREATE UNIQUE INDEX ON e1 (id); +CREATE UNIQUE INDEX ON e2 (id); + +ANALYZE prta,prtb,e; + +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb WHERE prta.id=prtb.id; + +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb,e WHERE prta.id=prtb.id AND prta.id=e.id; + -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; -- 2.25.1 --------------8EB2F9A6243C623F4024291E-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Asymmetric partitionwise join. @ 2021-04-02 06:02 Andrey Lepikhov <a.lepikhov@postgrespro.ru> 0 siblings, 0 replies; 329+ messages in thread From: Andrey Lepikhov @ 2021-04-02 06:02 UTC (permalink / raw) Teach optimizer to consider partitionwise join of non-partitioned table with each partition of partitioned table. Disallow asymmetric machinery for joining of two partitioned (or appended) relations because it could cause huge consumption of CPU and memory during reparameterization of NestLoop path. Change logic of the multilevel child relids adjustment, because this feature allows the optimizer to plan in new way. --- src/backend/optimizer/path/joinpath.c | 9 + src/backend/optimizer/path/joinrels.c | 187 +++++++++ src/backend/optimizer/plan/setrefs.c | 17 +- src/backend/optimizer/util/appendinfo.c | 51 ++- src/backend/optimizer/util/pathnode.c | 9 +- src/backend/optimizer/util/relnode.c | 19 +- src/include/optimizer/paths.h | 7 +- src/test/regress/expected/partition_join.out | 378 +++++++++++++++++++ src/test/regress/sql/partition_join.sql | 167 ++++++++ 9 files changed, 808 insertions(+), 36 deletions(-) diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c index 6407ede12a..32618ebbd5 100644 --- a/src/backend/optimizer/path/joinpath.c +++ b/src/backend/optimizer/path/joinpath.c @@ -335,6 +335,15 @@ add_paths_to_joinrel(PlannerInfo *root, if (set_join_pathlist_hook) set_join_pathlist_hook(root, joinrel, outerrel, innerrel, jointype, &extra); + + /* + * 7. If outer relation is delivered from partition-tables, consider + * distributing inner relation to every partition-leaf prior to + * append these leafs. + */ + try_asymmetric_partitionwise_join(root, joinrel, + outerrel, innerrel, + jointype, &extra); } /* diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c index 8b69870cf4..9453258f83 100644 --- a/src/backend/optimizer/path/joinrels.c +++ b/src/backend/optimizer/path/joinrels.c @@ -16,6 +16,7 @@ #include "miscadmin.h" #include "optimizer/appendinfo.h" +#include "optimizer/cost.h" #include "optimizer/joininfo.h" #include "optimizer/pathnode.h" #include "optimizer/paths.h" @@ -1552,6 +1553,192 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2, } } +/* + * Build RelOptInfo on JOIN of each partition of the outer relation and the inner + * relation. Return List of such RelOptInfo's. Return NIL, if at least one of + * these JOINs is impossible to build. + */ +static List * +extract_asymmetric_partitionwise_subjoin(PlannerInfo *root, + RelOptInfo *joinrel, + AppendPath *append_path, + RelOptInfo *inner_rel, + JoinType jointype, + JoinPathExtraData *extra) +{ + List *result = NIL; + ListCell *lc; + + foreach (lc, append_path->subpaths) + { + Path *child_path = lfirst(lc); + RelOptInfo *child_rel = child_path->parent; + Relids child_joinrelids; + Relids parent_relids; + RelOptInfo *child_joinrel; + SpecialJoinInfo *child_sjinfo; + List *child_restrictlist; + + child_joinrelids = bms_union(child_rel->relids, inner_rel->relids); + parent_relids = bms_union(append_path->path.parent->relids, + inner_rel->relids); + + child_sjinfo = build_child_join_sjinfo(root, extra->sjinfo, + child_rel->relids, + inner_rel->relids); + child_restrictlist = (List *) + adjust_appendrel_attrs_multilevel(root, (Node *)extra->restrictlist, + child_joinrelids, parent_relids); + + child_joinrel = find_join_rel(root, child_joinrelids); + if (!child_joinrel) + child_joinrel = build_child_join_rel(root, + child_rel, + inner_rel, + joinrel, + child_restrictlist, + child_sjinfo, + jointype); + else + { + /* + * The join relation already exists. For example, it could happen if + * we join two plane tables with partitioned table(s). + * Populating this join with additional paths could push out some + * previously added paths which could be pointed in a subplans list + * of an higher level append. + * Of course, we could save such paths before generating new. But it + * can increase too much the number of paths in complex queries. It + * can be a task for future work. + */ + return NIL; + } + + populate_joinrel_with_paths(root, + child_rel, + inner_rel, + child_joinrel, + child_sjinfo, + child_restrictlist); + + /* Give up if asymmetric partition-wise join is not available */ + if (child_joinrel->pathlist == NIL) + return NIL; + + set_cheapest(child_joinrel); + result = lappend(result, child_joinrel); + } + return result; +} + +static bool +is_asymmetric_join_feasible(PlannerInfo *root, + RelOptInfo *outer_rel, + RelOptInfo *inner_rel, + JoinType jointype) +{ + ListCell *lc; + + if (jointype != JOIN_INNER && jointype != JOIN_LEFT) + return false; + + if (IS_OTHER_REL(outer_rel) || IS_OTHER_REL(inner_rel)) + return false; + + /* Disallow recursive usage of asymmertic join machinery */ + if (root->join_rel_level == NULL) + return false; + + /* + * Don't allow asymmetric JOIN of two append subplans. + * In the case of a parameterized NL join, a reparameterization procedure + * will lead to large memory allocations and a CPU consumption: + * each reparameterization will induce subpath duplication, creating new + * ParamPathInfo instance and increasing of ppilist up to number of + * partitions in the inner. Also, if we have many partitions, each bitmapset + * variable will be large and many leaks of such variable (caused by relid + * replacement) will highly increase memory consumption. + * So, we deny such paths for now. + */ + foreach(lc, inner_rel->pathlist) + { + if (IsA(lfirst(lc), AppendPath)) + return false; + } + + return true; +} + +void +try_asymmetric_partitionwise_join(PlannerInfo *root, + RelOptInfo *joinrel, + RelOptInfo *outer_rel, + RelOptInfo *inner_rel, + JoinType jointype, + JoinPathExtraData *extra) +{ + ListCell *lc; + + /* + * Try this kind of paths if we allow complex partitionwise joins and we know + * we can build this join safely. + */ + if (!enable_partitionwise_join || + !is_asymmetric_join_feasible(root, outer_rel, inner_rel, jointype)) + return; + + foreach (lc, outer_rel->pathlist) + { + AppendPath *append_path = lfirst(lc); + + /* + * We assume this pathlist keeps at least one AppendPath that + * represents partitioned table-scan, symmetric or asymmetric + * partition-wise join. Asymmetric join isn't needed if the append node + * has only one child. + */ + if (IsA(append_path, AppendPath) && + list_length(append_path->subpaths) > 1) + { + List **join_rel_level_saved; + List *live_childrels = NIL; + + join_rel_level_saved = root->join_rel_level; + PG_TRY(); + { + /* temporary disables "dynamic programming" algorithm */ + root->join_rel_level = NULL; + + live_childrels = + extract_asymmetric_partitionwise_subjoin(root, + joinrel, + append_path, + inner_rel, + jointype, + extra); + } + PG_FINALLY(); + { + root->join_rel_level = join_rel_level_saved; + } + PG_END_TRY(); + + if (live_childrels != NIL) + { + /* + * Add new append relation. We must choose cheapest paths after + * this operation because the pathlist possibly contains + * joinrels and appendrels that can be suboptimal. + */ + add_paths_to_append_rel(root, joinrel, live_childrels); + set_cheapest(joinrel); + } + + break; + } + } +} + /* * Construct the SpecialJoinInfo for a child-join by translating * SpecialJoinInfo for the join between parents. left_relids and right_relids diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index e50624c465..fccc0685d7 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -281,24 +281,29 @@ set_plan_references(PlannerInfo *root, Plan *plan) /* * Adjust RT indexes of AppendRelInfos and add to final appendrels list. - * We assume the AppendRelInfos were built during planning and don't need - * to be copied. + * The AppendRelInfos are copied, because as a part of a subplan they could + * be visited many times in the case of asymmetric join. */ foreach(lc, root->append_rel_list) { AppendRelInfo *appinfo = lfirst_node(AppendRelInfo, lc); + AppendRelInfo *newappinfo; + + /* flat copy is enough since all valuable fields are scalars */ + newappinfo = (AppendRelInfo *) palloc(sizeof(AppendRelInfo)); + memcpy(newappinfo, appinfo, sizeof(AppendRelInfo)); /* adjust RT indexes */ - appinfo->parent_relid += rtoffset; - appinfo->child_relid += rtoffset; + newappinfo->parent_relid += rtoffset; + newappinfo->child_relid += rtoffset; /* * Rather than adjust the translated_vars entries, just drop 'em. * Neither the executor nor EXPLAIN currently need that data. */ - appinfo->translated_vars = NIL; + newappinfo->translated_vars = NIL; - glob->appendRelations = lappend(glob->appendRelations, appinfo); + glob->appendRelations = lappend(glob->appendRelations, newappinfo); } /* Now fix the Plan tree */ diff --git a/src/backend/optimizer/util/appendinfo.c b/src/backend/optimizer/util/appendinfo.c index af46f581ac..3ae25f3444 100644 --- a/src/backend/optimizer/util/appendinfo.c +++ b/src/backend/optimizer/util/appendinfo.c @@ -202,7 +202,9 @@ adjust_appendrel_attrs(PlannerInfo *root, Node *node, int nappinfos, context.appinfos = appinfos; /* If there's nothing to adjust, don't call this function. */ - Assert(nappinfos >= 1 && appinfos != NULL); + /* If there's nothing to adjust, just return a duplication */ + if (nappinfos == 0) + return copyObject(node); /* Should never be translating a Query tree. */ Assert(node == NULL || !IsA(node, Query)); @@ -489,12 +491,10 @@ adjust_appendrel_attrs_multilevel(PlannerInfo *root, Node *node, Relids child_relids, Relids top_parent_relids) { - AppendRelInfo **appinfos; - Bitmapset *parent_relids = NULL; - int nappinfos; - int cnt; - - Assert(bms_num_members(child_relids) == bms_num_members(top_parent_relids)); + AppendRelInfo **appinfos; + Relids parent_relids = NULL; + int nappinfos; + int cnt; appinfos = find_appinfos_by_relids(root, child_relids, &nappinfos); @@ -506,8 +506,13 @@ adjust_appendrel_attrs_multilevel(PlannerInfo *root, Node *node, parent_relids = bms_add_member(parent_relids, appinfo->parent_relid); } - /* Recurse if immediate parent is not the top parent. */ - if (!bms_equal(parent_relids, top_parent_relids)) + /* + * Recurse if immediate parent is not the top parent. Keep in mind that in a + * case of asymmetric JOIN top_parent_relids can contain relids which aren't + * part of an append node. + */ + if (!bms_equal(parent_relids, top_parent_relids) && + !bms_is_subset(parent_relids, top_parent_relids)) node = adjust_appendrel_attrs_multilevel(root, node, parent_relids, top_parent_relids); @@ -515,12 +520,13 @@ adjust_appendrel_attrs_multilevel(PlannerInfo *root, Node *node, node = adjust_appendrel_attrs(root, node, nappinfos, appinfos); pfree(appinfos); + pfree(parent_relids); return node; } /* - * Substitute child relids for parent relids in a Relid set. The array of + * Substitute child relids for parent relids in a Relid set. The array of * appinfos specifies the substitutions to be performed. */ Relids @@ -565,8 +571,9 @@ adjust_child_relids_multilevel(PlannerInfo *root, Relids relids, AppendRelInfo **appinfos; int nappinfos; Relids parent_relids = NULL; + Relids normal_relids = NULL; Relids result; - Relids tmp_result = NULL; + Relids tmp_result = relids; int cnt; /* @@ -579,12 +586,17 @@ adjust_child_relids_multilevel(PlannerInfo *root, Relids relids, appinfos = find_appinfos_by_relids(root, child_relids, &nappinfos); /* Construct relids set for the immediate parent of the given child. */ + normal_relids = bms_copy(child_relids); for (cnt = 0; cnt < nappinfos; cnt++) { AppendRelInfo *appinfo = appinfos[cnt]; parent_relids = bms_add_member(parent_relids, appinfo->parent_relid); + normal_relids = bms_del_member(normal_relids, appinfo->child_relid); } + parent_relids = bms_union(parent_relids, normal_relids); + if (normal_relids) + bms_free(normal_relids); /* Recurse if immediate parent is not the top parent. */ if (!bms_equal(parent_relids, top_parent_relids)) @@ -592,13 +604,15 @@ adjust_child_relids_multilevel(PlannerInfo *root, Relids relids, tmp_result = adjust_child_relids_multilevel(root, relids, parent_relids, top_parent_relids); - relids = tmp_result; } - result = adjust_child_relids(relids, nappinfos, appinfos); + result = adjust_child_relids(tmp_result, nappinfos, appinfos); - /* Free memory consumed by any intermediate result. */ - if (tmp_result) + /* + * Free memory consumed by any intermediate result. If recursive pass did't + * replace any relids, tmp_result point to the original set, not a copy. + */ + if (tmp_result != relids) bms_free(tmp_result); bms_free(parent_relids); pfree(appinfos); @@ -715,11 +729,11 @@ AppendRelInfo ** find_appinfos_by_relids(PlannerInfo *root, Relids relids, int *nappinfos) { AppendRelInfo **appinfos; + int nrooms = bms_num_members(relids); int cnt = 0; int i; - *nappinfos = bms_num_members(relids); - appinfos = (AppendRelInfo **) palloc(sizeof(AppendRelInfo *) * *nappinfos); + appinfos = (AppendRelInfo **) palloc(sizeof(AppendRelInfo *) * nrooms); i = -1; while ((i = bms_next_member(relids, i)) >= 0) @@ -727,10 +741,11 @@ find_appinfos_by_relids(PlannerInfo *root, Relids relids, int *nappinfos) AppendRelInfo *appinfo = root->append_rel_array[i]; if (!appinfo) - elog(ERROR, "child rel %d not found in append_rel_array", i); + continue; appinfos[cnt++] = appinfo; } + *nappinfos = cnt; return appinfos; } diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index cedb3848dd..17e215b72d 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -4225,7 +4225,14 @@ do { \ MemoryContextSwitchTo(oldcontext); } - bms_free(required_outer); + + /* + * If adjust_child_relids_multilevel don't do replacements it returns + * the original set, not a copy. It is possible in the case of asymmetric + * JOIN and child_rel->relids contains relids only of plane relations. + */ + if (required_outer != old_ppi->ppi_req_outer) + bms_free(required_outer); new_path->param_info = new_ppi; diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index 47769cea45..ddf0f5a876 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -792,11 +792,8 @@ build_child_join_rel(PlannerInfo *root, RelOptInfo *outer_rel, AppendRelInfo **appinfos; int nappinfos; - /* Only joins between "other" relations land here. */ - Assert(IS_OTHER_REL(outer_rel) && IS_OTHER_REL(inner_rel)); - - /* The parent joinrel should have consider_partitionwise_join set. */ - Assert(parent_joinrel->consider_partitionwise_join); + /* Either of relations must be "other" relation at least. */ + Assert(IS_OTHER_REL(outer_rel) || IS_OTHER_REL(inner_rel)); joinrel->reloptkind = RELOPT_OTHER_JOINREL; joinrel->relids = bms_union(outer_rel->relids, inner_rel->relids); @@ -854,8 +851,11 @@ build_child_join_rel(PlannerInfo *root, RelOptInfo *outer_rel, joinrel->partexprs = NULL; joinrel->nullable_partexprs = NULL; - joinrel->top_parent_relids = bms_union(outer_rel->top_parent_relids, - inner_rel->top_parent_relids); + joinrel->top_parent_relids = + bms_union(IS_OTHER_REL(outer_rel) ? + outer_rel->top_parent_relids : outer_rel->relids, + IS_OTHER_REL(inner_rel) ? + inner_rel->top_parent_relids : inner_rel->relids); /* Compute information relevant to foreign relations. */ set_foreign_rel_properties(joinrel, outer_rel, inner_rel); @@ -2036,9 +2036,8 @@ build_child_join_reltarget(PlannerInfo *root, { /* Build the targetlist */ childrel->reltarget->exprs = (List *) - adjust_appendrel_attrs(root, - (Node *) parentrel->reltarget->exprs, - nappinfos, appinfos); + adjust_appendrel_attrs_multilevel(root, (Node *)parentrel->reltarget->exprs, + childrel->relids, parentrel->relids); /* Set the cost and width fields */ childrel->reltarget->cost.startup = parentrel->reltarget->cost.startup; diff --git a/src/include/optimizer/paths.h b/src/include/optimizer/paths.h index f1d111063c..a0106dc539 100644 --- a/src/include/optimizer/paths.h +++ b/src/include/optimizer/paths.h @@ -109,7 +109,12 @@ extern bool have_join_order_restriction(PlannerInfo *root, extern bool have_dangerous_phv(PlannerInfo *root, Relids outer_relids, Relids inner_params); extern void mark_dummy_rel(RelOptInfo *rel); - +extern void try_asymmetric_partitionwise_join(PlannerInfo *root, + RelOptInfo *joinrel, + RelOptInfo *outer_rel, + RelOptInfo *inner_rel, + JoinType jointype, + JoinPathExtraData *extra); /* * equivclass.c * routines for managing EquivalenceClasses diff --git a/src/test/regress/expected/partition_join.out b/src/test/regress/expected/partition_join.out index 27f7525b3e..327505676c 100644 --- a/src/test/regress/expected/partition_join.out +++ b/src/test/regress/expected/partition_join.out @@ -2320,6 +2320,384 @@ SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = 375 | 0375 | 375 | 0375 (8 rows) +-- +-- For asymmetric partition-wise join +-- +CREATE TABLE prt5 (hkey int, a int, b int) PARTITION BY HASH(hkey); +CREATE TABLE prt5_p0 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 0); +CREATE TABLE prt5_p1 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 1); +CREATE TABLE prt5_p2 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 2); +CREATE TABLE prt6 (aid int, alabel text) PARTITION BY HASH(aid); +CREATE TABLE prt6_p0 PARTITION OF prt6 + FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prt6_p1 PARTITION OF prt6 + FOR VALUES WITH (modulus 2, remainder 1); +CREATE TABLE t5_1 (aid int, alabel text); +CREATE TABLE t5_2 (bid int, blabel text); +INSERT INTO prt5 (SELECT x, (x % 1000)::int, + ((x+1) % 1000)::int + FROM generate_series(1,1000000) x); +INSERT INTO t5_1 (SELECT x, md5(x::text) FROM generate_series(-200, 1500) x); +INSERT INTO t5_2 (SELECT x, md5(x::text) FROM generate_series(-200, 1500) x); +INSERT INTO prt6 (SELECT * FROM t5_1); +VACUUM ANALYZE prt5,prt6,t5_1,t5_2; +SET max_parallel_workers_per_gather = 0; +-- Trivial asymmetric JOIN of partitioned table with a relation +EXPLAIN (COSTS OFF) +SELECT * + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +------------------------------------------------------- + Append + -> Hash Join + Hash Cond: (prt5_1.a = t5_1.aid) + -> Seq Scan on prt5_p0 prt5_1 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) + -> Hash Join + Hash Cond: (prt5_2.a = t5_1.aid) + -> Seq Scan on prt5_p1 prt5_2 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) + -> Hash Join + Hash Cond: (prt5_3.a = t5_1.aid) + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) +(19 rows) + +-- The same, but appended with UNION ALL +EXPLAIN (COSTS OFF) +SELECT * FROM ( + (SELECT * FROM prt5_p0) + UNION ALL + (SELECT * FROM prt5_p1) + UNION ALL + (SELECT * FROM prt5_p2) + ) AS sq1 +JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +------------------------------------------------------- + Append + -> Hash Join + Hash Cond: (prt5_p0.a = t5_1.aid) + -> Seq Scan on prt5_p0 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) + -> Hash Join + Hash Cond: (prt5_p1.a = t5_1.aid) + -> Seq Scan on prt5_p1 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) + -> Hash Join + Hash Cond: (prt5_p2.a = t5_1.aid) + -> Seq Scan on prt5_p2 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) +(19 rows) + +-- Don't allow asymmetric JOIN of two partitioned tables. +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt5 JOIN prt6 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +------------------------------------------------------------- + Aggregate + -> Hash Join + Hash Cond: (prt5.a = prt6.aid) + -> Append + -> Seq Scan on prt5_p0 prt5_1 + -> Seq Scan on prt5_p1 prt5_2 + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Append + -> Seq Scan on prt6_p0 prt6_1 + Filter: (alabel ~~ '%abc%'::text) + -> Seq Scan on prt6_p1 prt6_2 + Filter: (alabel ~~ '%abc%'::text) +(13 rows) + +SELECT count(*) FROM prt5 JOIN prt6 ON a = aid AND alabel like '%abc%'; + count +------- + 4000 +(1 row) + +-- Check asymmetric JOIN with Subquery +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt5 JOIN ( + SELECT * FROM prt6 LIMIT 1000 +) AS sq1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +---------------------------------------------------------------------- + Aggregate + -> Append + -> Hash Join + Hash Cond: (prt5_1.a = sq1.aid) + -> Seq Scan on prt5_p0 prt5_1 + -> Hash + -> Subquery Scan on sq1 + Filter: (sq1.alabel ~~ '%abc%'::text) + -> Limit + -> Append + -> Seq Scan on prt6_p0 prt6_1 + -> Seq Scan on prt6_p1 prt6_2 + -> Hash Join + Hash Cond: (prt5_2.a = sq1.aid) + -> Seq Scan on prt5_p1 prt5_2 + -> Hash + -> Subquery Scan on sq1 + Filter: (sq1.alabel ~~ '%abc%'::text) + -> Limit + -> Append + -> Seq Scan on prt6_p0 prt6_4 + -> Seq Scan on prt6_p1 prt6_5 + -> Hash Join + Hash Cond: (prt5_3.a = sq1.aid) + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Subquery Scan on sq1 + Filter: (sq1.alabel ~~ '%abc%'::text) + -> Limit + -> Append + -> Seq Scan on prt6_p0 prt6_7 + -> Seq Scan on prt6_p1 prt6_8 +(32 rows) + +SELECT count(*) FROM prt5 JOIN (SELECT * FROM prt6 LIMIT 1000) AS sq1 + ON a = aid AND alabel like '%abc%'; + count +------- + 2000 +(1 row) + +-- Asymmetric JOIN of two plane tables and one partitioned +EXPLAIN (COSTS OFF) +SELECT count(*) + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + QUERY PLAN +------------------------------------------------------------------ + Aggregate + -> Append + -> Hash Join + Hash Cond: (prt5_1.b = t5_2.bid) + -> Hash Join + Hash Cond: (prt5_1.a = t5_1.aid) + -> Seq Scan on prt5_p0 prt5_1 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%ab%'::text) + -> Hash + -> Seq Scan on t5_2 + Filter: (blabel ~~ '%cd%'::text) + -> Hash Join + Hash Cond: (prt5_2.b = t5_2.bid) + -> Hash Join + Hash Cond: (prt5_2.a = t5_1.aid) + -> Seq Scan on prt5_p1 prt5_2 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%ab%'::text) + -> Hash + -> Seq Scan on t5_2 + Filter: (blabel ~~ '%cd%'::text) + -> Hash Join + Hash Cond: (prt5_3.b = t5_2.bid) + -> Hash Join + Hash Cond: (prt5_3.a = t5_1.aid) + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%ab%'::text) + -> Hash + -> Seq Scan on t5_2 + Filter: (blabel ~~ '%cd%'::text) +(35 rows) + +SELECT count(*) + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + count +------- + 11000 +(1 row) + +-- unable to extract non-partitioned right relation +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 RIGHT JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +----------------------------------------------- + Hash Right Join + Hash Cond: (prt5.a = t5_1.aid) + Join Filter: (t5_1.alabel ~~ '%abc%'::text) + -> Append + -> Seq Scan on prt5_p0 prt5_1 + -> Seq Scan on prt5_p1 prt5_2 + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 +(9 rows) + +-- left side can be extracted, but no cost benefit +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 LEFT JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +------------------------------------------------- + Hash Left Join + Hash Cond: (prt5.a = t5_1.aid) + -> Append + -> Seq Scan on prt5_p0 prt5_1 + -> Seq Scan on prt5_p1 prt5_2 + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) +(9 rows) + +-- validation of the results with/without asymmetric partition-wise join +SELECT * INTO pg_temp.result01a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; +SELECT * INTO pg_temp.result02a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; +SET enable_partitionwise_join = off; +SELECT * INTO pg_temp.result01b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; +SELECT * INTO pg_temp.result02b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; +SELECT * FROM pg_temp.result01a EXCEPT SELECT * FROM pg_temp.result01b; + hkey | a | b | aid | alabel +------+---+---+-----+-------- +(0 rows) + +SELECT * FROM pg_temp.result02a EXCEPT SELECT * FROM pg_temp.result02b; + hkey | a | b | aid | alabel | bid | blabel +------+---+---+-----+--------+-----+-------- +(0 rows) + +SET enable_partitionwise_join = on; +-- Check reparameterization code when required_outer set contains relid of plain +-- relation entry, not 'other' entry. +SET enable_hashjoin = 'off'; +SET enable_mergejoin = 'off'; +SET enable_material = 'off'; +CREATE TABLE big AS SELECT x AS x FROM generate_series(1,1E4) x; +CREATE INDEX ON big(x); +CREATE TABLE small AS SELECT x, -x AS y FROM generate_series(1,100) x; +CREATE TABLE part_l0 (x int, y int, z int) PARTITION BY HASH (y); +CREATE TABLE part0_l1 PARTITION OF part_l0 (y) + FOR VALUES WITH (modulus 2, remainder 0) PARTITION BY HASH (z); +CREATE TABLE part0_l2 PARTITION OF part0_l1 (z) + FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE part1_l2 PARTITION OF part0_l1 (z) + FOR VALUES WITH (modulus 2, remainder 1); +CREATE TABLE part1_l1 PARTITION OF part_l0 (y) + FOR VALUES WITH (modulus 2, remainder 1); +INSERT INTO part_l0 (x, y, z) (SELECT x,x,x FROM generate_series(1,1E4) x); +ANALYZE big,small,part_l0; +EXPLAIN +SELECT small.* FROM small + JOIN part_l0 ON small.y = part_l0.y AND small.y + part_l0.y < 10 + LEFT JOIN big ON big.x = small.x; + QUERY PLAN +----------------------------------------------------------------------------------------- + Nested Loop Left Join (cost=0.29..33230.19 rows=33 width=8) + -> Append (cost=0.00..33008.08 rows=67 width=8) + -> Nested Loop (cost=0.00..16604.25 rows=33 width=8) + Join Filter: ((small.y = part_l0_1.y) AND ((small.y + part_l0_1.y) < 10)) + -> Seq Scan on small (cost=0.00..2.00 rows=100 width=8) + -> Seq Scan on part0_l2 part_l0_1 (cost=0.00..78.19 rows=5019 width=4) + -> Nested Loop (cost=0.00..3.75 rows=1 width=8) + Join Filter: ((small.y = part_l0_2.y) AND ((small.y + part_l0_2.y) < 10)) + -> Seq Scan on part1_l2 part_l0_2 (cost=0.00..0.00 rows=1 width=4) + -> Seq Scan on small (cost=0.00..2.00 rows=100 width=8) + -> Nested Loop (cost=0.00..16399.75 rows=33 width=8) + Join Filter: ((small.y = part_l0_3.y) AND ((small.y + part_l0_3.y) < 10)) + -> Seq Scan on small (cost=0.00..2.00 rows=100 width=8) + -> Seq Scan on part1_l1 part_l0_3 (cost=0.00..76.81 rows=4981 width=4) + -> Index Only Scan using big_x_idx on big (cost=0.29..3.31 rows=1 width=5) + Index Cond: (x = (small.x)::numeric) +(16 rows) + +DROP TABLE IF EXISTS big,small,part_l0 CASCADE; +RESET enable_hashjoin; +RESET enable_mergejoin; +RESET enable_material; +RESET max_parallel_workers_per_gather; +-- Parameterized path examples. +CREATE TABLE prta (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prta1 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prta2 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prta1 (id); +CREATE UNIQUE INDEX ON prta2 (id); +INSERT INTO prta (id, payload) + (SELECT *, ('abc' || id)::text AS payload + FROM generate_series(1,1) AS id); +CREATE TABLE prtb (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prtb1 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prtb2 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prtb1 (id); +CREATE UNIQUE INDEX ON prtb2 (id); +INSERT INTO prtb (id, payload) + (SELECT *, ('def' || id)::text AS payload + FROM generate_series(1,1000) AS id); +CREATE TABLE e (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE e1 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE e2 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 1); +INSERT INTO e (id, payload) + (SELECT *, ('ghi' || id)::text AS payload + FROM generate_series(1,1000) AS id); +CREATE UNIQUE INDEX ON e1 (id); +CREATE UNIQUE INDEX ON e2 (id); +ANALYZE prta,prtb,e; +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb WHERE prta.id=prtb.id; + QUERY PLAN +----------------------------------------------------------- + Append + -> Nested Loop + -> Seq Scan on prta1 prta_1 + -> Index Scan using prtb1_id_idx on prtb1 prtb_1 + Index Cond: (id = prta_1.id) + -> Nested Loop + -> Seq Scan on prta2 prta_2 + -> Index Scan using prtb2_id_idx on prtb2 prtb_2 + Index Cond: (id = prta_2.id) +(9 rows) + +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb,e WHERE prta.id=prtb.id AND prta.id=e.id; + QUERY PLAN +----------------------------------------------------------------- + Append + -> Nested Loop + Join Filter: (prta_1.id = e_1.id) + -> Nested Loop + -> Seq Scan on prta1 prta_1 + -> Index Scan using prtb1_id_idx on prtb1 prtb_1 + Index Cond: (id = prta_1.id) + -> Index Scan using e1_id_idx on e1 e_1 + Index Cond: (id = prtb_1.id) + -> Nested Loop + Join Filter: (prta_2.id = e_2.id) + -> Nested Loop + -> Seq Scan on prta2 prta_2 + -> Index Scan using prtb2_id_idx on prtb2 prtb_2 + Index Cond: (id = prta_2.id) + -> Index Scan using e2_id_idx on e2 e_2 + Index Cond: (id = prtb_2.id) +(17 rows) + -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; diff --git a/src/test/regress/sql/partition_join.sql b/src/test/regress/sql/partition_join.sql index d97b5b69ff..364b3216f8 100644 --- a/src/test/regress/sql/partition_join.sql +++ b/src/test/regress/sql/partition_join.sql @@ -536,6 +536,173 @@ EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; +-- +-- For asymmetric partition-wise join +-- +CREATE TABLE prt5 (hkey int, a int, b int) PARTITION BY HASH(hkey); +CREATE TABLE prt5_p0 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 0); +CREATE TABLE prt5_p1 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 1); +CREATE TABLE prt5_p2 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 2); +CREATE TABLE prt6 (aid int, alabel text) PARTITION BY HASH(aid); +CREATE TABLE prt6_p0 PARTITION OF prt6 + FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prt6_p1 PARTITION OF prt6 + FOR VALUES WITH (modulus 2, remainder 1); +CREATE TABLE t5_1 (aid int, alabel text); +CREATE TABLE t5_2 (bid int, blabel text); + +INSERT INTO prt5 (SELECT x, (x % 1000)::int, + ((x+1) % 1000)::int + FROM generate_series(1,1000000) x); +INSERT INTO t5_1 (SELECT x, md5(x::text) FROM generate_series(-200, 1500) x); +INSERT INTO t5_2 (SELECT x, md5(x::text) FROM generate_series(-200, 1500) x); +INSERT INTO prt6 (SELECT * FROM t5_1); + +VACUUM ANALYZE prt5,prt6,t5_1,t5_2; + +SET max_parallel_workers_per_gather = 0; + +-- Trivial asymmetric JOIN of partitioned table with a relation +EXPLAIN (COSTS OFF) +SELECT * + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +-- The same, but appended with UNION ALL +EXPLAIN (COSTS OFF) +SELECT * FROM ( + (SELECT * FROM prt5_p0) + UNION ALL + (SELECT * FROM prt5_p1) + UNION ALL + (SELECT * FROM prt5_p2) + ) AS sq1 +JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +-- Don't allow asymmetric JOIN of two partitioned tables. +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt5 JOIN prt6 ON a = aid AND alabel like '%abc%'; +SELECT count(*) FROM prt5 JOIN prt6 ON a = aid AND alabel like '%abc%'; + +-- Check asymmetric JOIN with Subquery +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt5 JOIN ( + SELECT * FROM prt6 LIMIT 1000 +) AS sq1 ON a = aid AND alabel like '%abc%'; +SELECT count(*) FROM prt5 JOIN (SELECT * FROM prt6 LIMIT 1000) AS sq1 + ON a = aid AND alabel like '%abc%'; + +-- Asymmetric JOIN of two plane tables and one partitioned +EXPLAIN (COSTS OFF) +SELECT count(*) + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; +SELECT count(*) + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + +-- unable to extract non-partitioned right relation +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 RIGHT JOIN t5_1 ON a = aid AND alabel like '%abc%'; +-- left side can be extracted, but no cost benefit +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 LEFT JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +-- validation of the results with/without asymmetric partition-wise join +SELECT * INTO pg_temp.result01a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +SELECT * INTO pg_temp.result02a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + +SET enable_partitionwise_join = off; + +SELECT * INTO pg_temp.result01b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +SELECT * INTO pg_temp.result02b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + +SELECT * FROM pg_temp.result01a EXCEPT SELECT * FROM pg_temp.result01b; +SELECT * FROM pg_temp.result02a EXCEPT SELECT * FROM pg_temp.result02b; + +SET enable_partitionwise_join = on; + +-- Check reparameterization code when required_outer set contains relid of plain +-- relation entry, not 'other' entry. + +SET enable_hashjoin = 'off'; +SET enable_mergejoin = 'off'; +SET enable_material = 'off'; + +CREATE TABLE big AS SELECT x AS x FROM generate_series(1,1E4) x; +CREATE INDEX ON big(x); +CREATE TABLE small AS SELECT x, -x AS y FROM generate_series(1,100) x; + +CREATE TABLE part_l0 (x int, y int, z int) PARTITION BY HASH (y); +CREATE TABLE part0_l1 PARTITION OF part_l0 (y) + FOR VALUES WITH (modulus 2, remainder 0) PARTITION BY HASH (z); +CREATE TABLE part0_l2 PARTITION OF part0_l1 (z) + FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE part1_l2 PARTITION OF part0_l1 (z) + FOR VALUES WITH (modulus 2, remainder 1); +CREATE TABLE part1_l1 PARTITION OF part_l0 (y) + FOR VALUES WITH (modulus 2, remainder 1); +INSERT INTO part_l0 (x, y, z) (SELECT x,x,x FROM generate_series(1,1E4) x); + +ANALYZE big,small,part_l0; + +EXPLAIN +SELECT small.* FROM small + JOIN part_l0 ON small.y = part_l0.y AND small.y + part_l0.y < 10 + LEFT JOIN big ON big.x = small.x; + +DROP TABLE IF EXISTS big,small,part_l0 CASCADE; +RESET enable_hashjoin; +RESET enable_mergejoin; +RESET enable_material; +RESET max_parallel_workers_per_gather; + +-- Parameterized path examples. +CREATE TABLE prta (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prta1 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prta2 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prta1 (id); +CREATE UNIQUE INDEX ON prta2 (id); +INSERT INTO prta (id, payload) + (SELECT *, ('abc' || id)::text AS payload + FROM generate_series(1,1) AS id); + +CREATE TABLE prtb (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prtb1 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prtb2 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prtb1 (id); +CREATE UNIQUE INDEX ON prtb2 (id); +INSERT INTO prtb (id, payload) + (SELECT *, ('def' || id)::text AS payload + FROM generate_series(1,1000) AS id); + +CREATE TABLE e (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE e1 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE e2 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 1); +INSERT INTO e (id, payload) + (SELECT *, ('ghi' || id)::text AS payload + FROM generate_series(1,1000) AS id); +CREATE UNIQUE INDEX ON e1 (id); +CREATE UNIQUE INDEX ON e2 (id); + +ANALYZE prta,prtb,e; + +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb WHERE prta.id=prtb.id; + +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb,e WHERE prta.id=prtb.id AND prta.id=e.id; + -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; -- 2.25.1 --------------3592BFA68FFAC61CCE0AF115-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Asymmetric partitionwise join. @ 2021-04-02 06:02 Andrey Lepikhov <a.lepikhov@postgrespro.ru> 0 siblings, 0 replies; 329+ messages in thread From: Andrey Lepikhov @ 2021-04-02 06:02 UTC (permalink / raw) Teach optimizer to consider partitionwise join of non-partitioned table with each partition of partitioned table. Disallow asymmetric machinery for joining of two partitioned (or appended) relations because it could cause huge consumption of CPU and memory during reparameterization of NestLoop path. Change logic of the multilevel child relids adjustment, because this feature allows the optimizer to plan in new way. --- src/backend/optimizer/path/joinpath.c | 9 + src/backend/optimizer/path/joinrels.c | 187 ++++++++ src/backend/optimizer/plan/setrefs.c | 17 +- src/backend/optimizer/util/appendinfo.c | 44 +- src/backend/optimizer/util/pathnode.c | 9 +- src/backend/optimizer/util/relnode.c | 19 +- src/include/optimizer/paths.h | 7 +- src/test/regress/expected/partition_join.out | 425 +++++++++++++++++++ src/test/regress/sql/partition_join.sql | 180 ++++++++ 9 files changed, 867 insertions(+), 30 deletions(-) diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c index 6407ede12a..32618ebbd5 100644 --- a/src/backend/optimizer/path/joinpath.c +++ b/src/backend/optimizer/path/joinpath.c @@ -335,6 +335,15 @@ add_paths_to_joinrel(PlannerInfo *root, if (set_join_pathlist_hook) set_join_pathlist_hook(root, joinrel, outerrel, innerrel, jointype, &extra); + + /* + * 7. If outer relation is delivered from partition-tables, consider + * distributing inner relation to every partition-leaf prior to + * append these leafs. + */ + try_asymmetric_partitionwise_join(root, joinrel, + outerrel, innerrel, + jointype, &extra); } /* diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c index 8b69870cf4..9453258f83 100644 --- a/src/backend/optimizer/path/joinrels.c +++ b/src/backend/optimizer/path/joinrels.c @@ -16,6 +16,7 @@ #include "miscadmin.h" #include "optimizer/appendinfo.h" +#include "optimizer/cost.h" #include "optimizer/joininfo.h" #include "optimizer/pathnode.h" #include "optimizer/paths.h" @@ -1552,6 +1553,192 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2, } } +/* + * Build RelOptInfo on JOIN of each partition of the outer relation and the inner + * relation. Return List of such RelOptInfo's. Return NIL, if at least one of + * these JOINs is impossible to build. + */ +static List * +extract_asymmetric_partitionwise_subjoin(PlannerInfo *root, + RelOptInfo *joinrel, + AppendPath *append_path, + RelOptInfo *inner_rel, + JoinType jointype, + JoinPathExtraData *extra) +{ + List *result = NIL; + ListCell *lc; + + foreach (lc, append_path->subpaths) + { + Path *child_path = lfirst(lc); + RelOptInfo *child_rel = child_path->parent; + Relids child_joinrelids; + Relids parent_relids; + RelOptInfo *child_joinrel; + SpecialJoinInfo *child_sjinfo; + List *child_restrictlist; + + child_joinrelids = bms_union(child_rel->relids, inner_rel->relids); + parent_relids = bms_union(append_path->path.parent->relids, + inner_rel->relids); + + child_sjinfo = build_child_join_sjinfo(root, extra->sjinfo, + child_rel->relids, + inner_rel->relids); + child_restrictlist = (List *) + adjust_appendrel_attrs_multilevel(root, (Node *)extra->restrictlist, + child_joinrelids, parent_relids); + + child_joinrel = find_join_rel(root, child_joinrelids); + if (!child_joinrel) + child_joinrel = build_child_join_rel(root, + child_rel, + inner_rel, + joinrel, + child_restrictlist, + child_sjinfo, + jointype); + else + { + /* + * The join relation already exists. For example, it could happen if + * we join two plane tables with partitioned table(s). + * Populating this join with additional paths could push out some + * previously added paths which could be pointed in a subplans list + * of an higher level append. + * Of course, we could save such paths before generating new. But it + * can increase too much the number of paths in complex queries. It + * can be a task for future work. + */ + return NIL; + } + + populate_joinrel_with_paths(root, + child_rel, + inner_rel, + child_joinrel, + child_sjinfo, + child_restrictlist); + + /* Give up if asymmetric partition-wise join is not available */ + if (child_joinrel->pathlist == NIL) + return NIL; + + set_cheapest(child_joinrel); + result = lappend(result, child_joinrel); + } + return result; +} + +static bool +is_asymmetric_join_feasible(PlannerInfo *root, + RelOptInfo *outer_rel, + RelOptInfo *inner_rel, + JoinType jointype) +{ + ListCell *lc; + + if (jointype != JOIN_INNER && jointype != JOIN_LEFT) + return false; + + if (IS_OTHER_REL(outer_rel) || IS_OTHER_REL(inner_rel)) + return false; + + /* Disallow recursive usage of asymmertic join machinery */ + if (root->join_rel_level == NULL) + return false; + + /* + * Don't allow asymmetric JOIN of two append subplans. + * In the case of a parameterized NL join, a reparameterization procedure + * will lead to large memory allocations and a CPU consumption: + * each reparameterization will induce subpath duplication, creating new + * ParamPathInfo instance and increasing of ppilist up to number of + * partitions in the inner. Also, if we have many partitions, each bitmapset + * variable will be large and many leaks of such variable (caused by relid + * replacement) will highly increase memory consumption. + * So, we deny such paths for now. + */ + foreach(lc, inner_rel->pathlist) + { + if (IsA(lfirst(lc), AppendPath)) + return false; + } + + return true; +} + +void +try_asymmetric_partitionwise_join(PlannerInfo *root, + RelOptInfo *joinrel, + RelOptInfo *outer_rel, + RelOptInfo *inner_rel, + JoinType jointype, + JoinPathExtraData *extra) +{ + ListCell *lc; + + /* + * Try this kind of paths if we allow complex partitionwise joins and we know + * we can build this join safely. + */ + if (!enable_partitionwise_join || + !is_asymmetric_join_feasible(root, outer_rel, inner_rel, jointype)) + return; + + foreach (lc, outer_rel->pathlist) + { + AppendPath *append_path = lfirst(lc); + + /* + * We assume this pathlist keeps at least one AppendPath that + * represents partitioned table-scan, symmetric or asymmetric + * partition-wise join. Asymmetric join isn't needed if the append node + * has only one child. + */ + if (IsA(append_path, AppendPath) && + list_length(append_path->subpaths) > 1) + { + List **join_rel_level_saved; + List *live_childrels = NIL; + + join_rel_level_saved = root->join_rel_level; + PG_TRY(); + { + /* temporary disables "dynamic programming" algorithm */ + root->join_rel_level = NULL; + + live_childrels = + extract_asymmetric_partitionwise_subjoin(root, + joinrel, + append_path, + inner_rel, + jointype, + extra); + } + PG_FINALLY(); + { + root->join_rel_level = join_rel_level_saved; + } + PG_END_TRY(); + + if (live_childrels != NIL) + { + /* + * Add new append relation. We must choose cheapest paths after + * this operation because the pathlist possibly contains + * joinrels and appendrels that can be suboptimal. + */ + add_paths_to_append_rel(root, joinrel, live_childrels); + set_cheapest(joinrel); + } + + break; + } + } +} + /* * Construct the SpecialJoinInfo for a child-join by translating * SpecialJoinInfo for the join between parents. left_relids and right_relids diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index e50624c465..fccc0685d7 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -281,24 +281,29 @@ set_plan_references(PlannerInfo *root, Plan *plan) /* * Adjust RT indexes of AppendRelInfos and add to final appendrels list. - * We assume the AppendRelInfos were built during planning and don't need - * to be copied. + * The AppendRelInfos are copied, because as a part of a subplan they could + * be visited many times in the case of asymmetric join. */ foreach(lc, root->append_rel_list) { AppendRelInfo *appinfo = lfirst_node(AppendRelInfo, lc); + AppendRelInfo *newappinfo; + + /* flat copy is enough since all valuable fields are scalars */ + newappinfo = (AppendRelInfo *) palloc(sizeof(AppendRelInfo)); + memcpy(newappinfo, appinfo, sizeof(AppendRelInfo)); /* adjust RT indexes */ - appinfo->parent_relid += rtoffset; - appinfo->child_relid += rtoffset; + newappinfo->parent_relid += rtoffset; + newappinfo->child_relid += rtoffset; /* * Rather than adjust the translated_vars entries, just drop 'em. * Neither the executor nor EXPLAIN currently need that data. */ - appinfo->translated_vars = NIL; + newappinfo->translated_vars = NIL; - glob->appendRelations = lappend(glob->appendRelations, appinfo); + glob->appendRelations = lappend(glob->appendRelations, newappinfo); } /* Now fix the Plan tree */ diff --git a/src/backend/optimizer/util/appendinfo.c b/src/backend/optimizer/util/appendinfo.c index af46f581ac..f4d12f76e1 100644 --- a/src/backend/optimizer/util/appendinfo.c +++ b/src/backend/optimizer/util/appendinfo.c @@ -202,7 +202,9 @@ adjust_appendrel_attrs(PlannerInfo *root, Node *node, int nappinfos, context.appinfos = appinfos; /* If there's nothing to adjust, don't call this function. */ - Assert(nappinfos >= 1 && appinfos != NULL); + /* If there's nothing to adjust, just return a duplication */ + if (nappinfos == 0) + return copyObject(node); /* Should never be translating a Query tree. */ Assert(node == NULL || !IsA(node, Query)); @@ -490,12 +492,10 @@ adjust_appendrel_attrs_multilevel(PlannerInfo *root, Node *node, Relids top_parent_relids) { AppendRelInfo **appinfos; - Bitmapset *parent_relids = NULL; + Relids parent_relids = NULL; int nappinfos; int cnt; - Assert(bms_num_members(child_relids) == bms_num_members(top_parent_relids)); - appinfos = find_appinfos_by_relids(root, child_relids, &nappinfos); /* Construct relids set for the immediate parent of given child. */ @@ -506,8 +506,13 @@ adjust_appendrel_attrs_multilevel(PlannerInfo *root, Node *node, parent_relids = bms_add_member(parent_relids, appinfo->parent_relid); } - /* Recurse if immediate parent is not the top parent. */ - if (!bms_equal(parent_relids, top_parent_relids)) + /* + * Recurse if immediate parent is not the top parent. Keep in mind that in a + * case of asymmetric JOIN top_parent_relids can contain relids which aren't + * part of an append node. + */ + if (!bms_equal(parent_relids, top_parent_relids) && + !bms_is_subset(parent_relids, top_parent_relids)) node = adjust_appendrel_attrs_multilevel(root, node, parent_relids, top_parent_relids); @@ -515,12 +520,13 @@ adjust_appendrel_attrs_multilevel(PlannerInfo *root, Node *node, node = adjust_appendrel_attrs(root, node, nappinfos, appinfos); pfree(appinfos); + pfree(parent_relids); return node; } /* - * Substitute child relids for parent relids in a Relid set. The array of + * Substitute child relids for parent relids in a Relid set. The array of * appinfos specifies the substitutions to be performed. */ Relids @@ -565,6 +571,7 @@ adjust_child_relids_multilevel(PlannerInfo *root, Relids relids, AppendRelInfo **appinfos; int nappinfos; Relids parent_relids = NULL; + Relids normal_relids = NULL; Relids result; Relids tmp_result = NULL; int cnt; @@ -579,13 +586,24 @@ adjust_child_relids_multilevel(PlannerInfo *root, Relids relids, appinfos = find_appinfos_by_relids(root, child_relids, &nappinfos); /* Construct relids set for the immediate parent of the given child. */ + normal_relids = bms_copy(child_relids); for (cnt = 0; cnt < nappinfos; cnt++) { AppendRelInfo *appinfo = appinfos[cnt]; parent_relids = bms_add_member(parent_relids, appinfo->parent_relid); + normal_relids = bms_del_member(normal_relids, appinfo->child_relid); } + if (bms_is_subset(relids, normal_relids)) + { + /* Nothing to do. Parameters set points to plain relations only. */ + result = relids; + goto cleanup; + } + + parent_relids = bms_union(parent_relids, normal_relids); + /* Recurse if immediate parent is not the top parent. */ if (!bms_equal(parent_relids, top_parent_relids)) { @@ -597,10 +615,11 @@ adjust_child_relids_multilevel(PlannerInfo *root, Relids relids, result = adjust_child_relids(relids, nappinfos, appinfos); +cleanup: /* Free memory consumed by any intermediate result. */ - if (tmp_result) - bms_free(tmp_result); + bms_free(tmp_result); bms_free(parent_relids); + bms_free(normal_relids); pfree(appinfos); return result; @@ -715,11 +734,11 @@ AppendRelInfo ** find_appinfos_by_relids(PlannerInfo *root, Relids relids, int *nappinfos) { AppendRelInfo **appinfos; + int nrooms = bms_num_members(relids); int cnt = 0; int i; - *nappinfos = bms_num_members(relids); - appinfos = (AppendRelInfo **) palloc(sizeof(AppendRelInfo *) * *nappinfos); + appinfos = (AppendRelInfo **) palloc(sizeof(AppendRelInfo *) * nrooms); i = -1; while ((i = bms_next_member(relids, i)) >= 0) @@ -727,10 +746,11 @@ find_appinfos_by_relids(PlannerInfo *root, Relids relids, int *nappinfos) AppendRelInfo *appinfo = root->append_rel_array[i]; if (!appinfo) - elog(ERROR, "child rel %d not found in append_rel_array", i); + continue; appinfos[cnt++] = appinfo; } + *nappinfos = cnt; return appinfos; } diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index cedb3848dd..17e215b72d 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -4225,7 +4225,14 @@ do { \ MemoryContextSwitchTo(oldcontext); } - bms_free(required_outer); + + /* + * If adjust_child_relids_multilevel don't do replacements it returns + * the original set, not a copy. It is possible in the case of asymmetric + * JOIN and child_rel->relids contains relids only of plane relations. + */ + if (required_outer != old_ppi->ppi_req_outer) + bms_free(required_outer); new_path->param_info = new_ppi; diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index 47769cea45..ddf0f5a876 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -792,11 +792,8 @@ build_child_join_rel(PlannerInfo *root, RelOptInfo *outer_rel, AppendRelInfo **appinfos; int nappinfos; - /* Only joins between "other" relations land here. */ - Assert(IS_OTHER_REL(outer_rel) && IS_OTHER_REL(inner_rel)); - - /* The parent joinrel should have consider_partitionwise_join set. */ - Assert(parent_joinrel->consider_partitionwise_join); + /* Either of relations must be "other" relation at least. */ + Assert(IS_OTHER_REL(outer_rel) || IS_OTHER_REL(inner_rel)); joinrel->reloptkind = RELOPT_OTHER_JOINREL; joinrel->relids = bms_union(outer_rel->relids, inner_rel->relids); @@ -854,8 +851,11 @@ build_child_join_rel(PlannerInfo *root, RelOptInfo *outer_rel, joinrel->partexprs = NULL; joinrel->nullable_partexprs = NULL; - joinrel->top_parent_relids = bms_union(outer_rel->top_parent_relids, - inner_rel->top_parent_relids); + joinrel->top_parent_relids = + bms_union(IS_OTHER_REL(outer_rel) ? + outer_rel->top_parent_relids : outer_rel->relids, + IS_OTHER_REL(inner_rel) ? + inner_rel->top_parent_relids : inner_rel->relids); /* Compute information relevant to foreign relations. */ set_foreign_rel_properties(joinrel, outer_rel, inner_rel); @@ -2036,9 +2036,8 @@ build_child_join_reltarget(PlannerInfo *root, { /* Build the targetlist */ childrel->reltarget->exprs = (List *) - adjust_appendrel_attrs(root, - (Node *) parentrel->reltarget->exprs, - nappinfos, appinfos); + adjust_appendrel_attrs_multilevel(root, (Node *)parentrel->reltarget->exprs, + childrel->relids, parentrel->relids); /* Set the cost and width fields */ childrel->reltarget->cost.startup = parentrel->reltarget->cost.startup; diff --git a/src/include/optimizer/paths.h b/src/include/optimizer/paths.h index f1d111063c..a0106dc539 100644 --- a/src/include/optimizer/paths.h +++ b/src/include/optimizer/paths.h @@ -109,7 +109,12 @@ extern bool have_join_order_restriction(PlannerInfo *root, extern bool have_dangerous_phv(PlannerInfo *root, Relids outer_relids, Relids inner_params); extern void mark_dummy_rel(RelOptInfo *rel); - +extern void try_asymmetric_partitionwise_join(PlannerInfo *root, + RelOptInfo *joinrel, + RelOptInfo *outer_rel, + RelOptInfo *inner_rel, + JoinType jointype, + JoinPathExtraData *extra); /* * equivclass.c * routines for managing EquivalenceClasses diff --git a/src/test/regress/expected/partition_join.out b/src/test/regress/expected/partition_join.out index 27f7525b3e..3eddd9bec3 100644 --- a/src/test/regress/expected/partition_join.out +++ b/src/test/regress/expected/partition_join.out @@ -2320,6 +2320,431 @@ SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = 375 | 0375 | 375 | 0375 (8 rows) +-- +-- For asymmetric partition-wise join +-- +CREATE TABLE prt5 (hkey int, a int, b int) PARTITION BY HASH(hkey); +CREATE TABLE prt5_p0 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 0); +CREATE TABLE prt5_p1 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 1); +CREATE TABLE prt5_p2 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 2); +CREATE TABLE prt6 (aid int, alabel text) PARTITION BY HASH(aid); +CREATE TABLE prt6_p0 PARTITION OF prt6 + FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prt6_p1 PARTITION OF prt6 + FOR VALUES WITH (modulus 2, remainder 1); +CREATE TABLE t5_1 (aid int, alabel text); +CREATE TABLE t5_2 (bid int, blabel text); +INSERT INTO prt5 (SELECT x, (x % 1000)::int, + ((x+1) % 1000)::int + FROM generate_series(1,1000000) x); +INSERT INTO t5_1 (SELECT x, md5(x::text) FROM generate_series(-200, 1500) x); +INSERT INTO t5_2 (SELECT x, md5(x::text) FROM generate_series(-200, 1500) x); +INSERT INTO prt6 (SELECT * FROM t5_1); +VACUUM ANALYZE prt5,prt6,t5_1,t5_2; +SET max_parallel_workers_per_gather = 0; +-- Trivial asymmetric JOIN of partitioned table with a relation +EXPLAIN (COSTS OFF) +SELECT * + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +------------------------------------------------------- + Append + -> Hash Join + Hash Cond: (prt5_1.a = t5_1.aid) + -> Seq Scan on prt5_p0 prt5_1 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) + -> Hash Join + Hash Cond: (prt5_2.a = t5_1.aid) + -> Seq Scan on prt5_p1 prt5_2 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) + -> Hash Join + Hash Cond: (prt5_3.a = t5_1.aid) + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) +(19 rows) + +-- The same, but appended with UNION ALL +EXPLAIN (COSTS OFF) +SELECT * FROM ( + (SELECT * FROM prt5_p0) + UNION ALL + (SELECT * FROM prt5_p1) + UNION ALL + (SELECT * FROM prt5_p2) + ) AS sq1 +JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +------------------------------------------------------- + Append + -> Hash Join + Hash Cond: (prt5_p0.a = t5_1.aid) + -> Seq Scan on prt5_p0 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) + -> Hash Join + Hash Cond: (prt5_p1.a = t5_1.aid) + -> Seq Scan on prt5_p1 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) + -> Hash Join + Hash Cond: (prt5_p2.a = t5_1.aid) + -> Seq Scan on prt5_p2 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) +(19 rows) + +-- Don't allow asymmetric JOIN of two partitioned tables. +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt5 JOIN prt6 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +------------------------------------------------------------- + Aggregate + -> Hash Join + Hash Cond: (prt5.a = prt6.aid) + -> Append + -> Seq Scan on prt5_p0 prt5_1 + -> Seq Scan on prt5_p1 prt5_2 + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Append + -> Seq Scan on prt6_p0 prt6_1 + Filter: (alabel ~~ '%abc%'::text) + -> Seq Scan on prt6_p1 prt6_2 + Filter: (alabel ~~ '%abc%'::text) +(13 rows) + +SELECT count(*) FROM prt5 JOIN prt6 ON a = aid AND alabel like '%abc%'; + count +------- + 4000 +(1 row) + +-- Check asymmetric JOIN with Subquery +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt5 JOIN ( + SELECT * FROM prt6 LIMIT 1000 +) AS sq1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +---------------------------------------------------------------------- + Aggregate + -> Append + -> Hash Join + Hash Cond: (prt5_1.a = sq1.aid) + -> Seq Scan on prt5_p0 prt5_1 + -> Hash + -> Subquery Scan on sq1 + Filter: (sq1.alabel ~~ '%abc%'::text) + -> Limit + -> Append + -> Seq Scan on prt6_p0 prt6_1 + -> Seq Scan on prt6_p1 prt6_2 + -> Hash Join + Hash Cond: (prt5_2.a = sq1.aid) + -> Seq Scan on prt5_p1 prt5_2 + -> Hash + -> Subquery Scan on sq1 + Filter: (sq1.alabel ~~ '%abc%'::text) + -> Limit + -> Append + -> Seq Scan on prt6_p0 prt6_4 + -> Seq Scan on prt6_p1 prt6_5 + -> Hash Join + Hash Cond: (prt5_3.a = sq1.aid) + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Subquery Scan on sq1 + Filter: (sq1.alabel ~~ '%abc%'::text) + -> Limit + -> Append + -> Seq Scan on prt6_p0 prt6_7 + -> Seq Scan on prt6_p1 prt6_8 +(32 rows) + +SELECT count(*) FROM prt5 JOIN (SELECT * FROM prt6 LIMIT 1000) AS sq1 + ON a = aid AND alabel like '%abc%'; + count +------- + 2000 +(1 row) + +-- Asymmetric JOIN of two plane tables and one partitioned +EXPLAIN (COSTS OFF) +SELECT count(*) + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + QUERY PLAN +------------------------------------------------------------------ + Aggregate + -> Append + -> Hash Join + Hash Cond: (prt5_1.b = t5_2.bid) + -> Hash Join + Hash Cond: (prt5_1.a = t5_1.aid) + -> Seq Scan on prt5_p0 prt5_1 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%ab%'::text) + -> Hash + -> Seq Scan on t5_2 + Filter: (blabel ~~ '%cd%'::text) + -> Hash Join + Hash Cond: (prt5_2.b = t5_2.bid) + -> Hash Join + Hash Cond: (prt5_2.a = t5_1.aid) + -> Seq Scan on prt5_p1 prt5_2 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%ab%'::text) + -> Hash + -> Seq Scan on t5_2 + Filter: (blabel ~~ '%cd%'::text) + -> Hash Join + Hash Cond: (prt5_3.b = t5_2.bid) + -> Hash Join + Hash Cond: (prt5_3.a = t5_1.aid) + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%ab%'::text) + -> Hash + -> Seq Scan on t5_2 + Filter: (blabel ~~ '%cd%'::text) +(35 rows) + +SELECT count(*) + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + count +------- + 11000 +(1 row) + +-- unable to extract non-partitioned right relation +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 RIGHT JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +----------------------------------------------- + Hash Right Join + Hash Cond: (prt5.a = t5_1.aid) + Join Filter: (t5_1.alabel ~~ '%abc%'::text) + -> Append + -> Seq Scan on prt5_p0 prt5_1 + -> Seq Scan on prt5_p1 prt5_2 + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 +(9 rows) + +-- left side can be extracted, but no cost benefit +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 LEFT JOIN t5_1 ON a = aid AND alabel like '%abc%'; + QUERY PLAN +------------------------------------------------- + Hash Left Join + Hash Cond: (prt5.a = t5_1.aid) + -> Append + -> Seq Scan on prt5_p0 prt5_1 + -> Seq Scan on prt5_p1 prt5_2 + -> Seq Scan on prt5_p2 prt5_3 + -> Hash + -> Seq Scan on t5_1 + Filter: (alabel ~~ '%abc%'::text) +(9 rows) + +-- validation of the results with/without asymmetric partition-wise join +SELECT * INTO pg_temp.result01a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; +SELECT * INTO pg_temp.result02a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; +SET enable_partitionwise_join = off; +SELECT * INTO pg_temp.result01b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; +SELECT * INTO pg_temp.result02b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; +SELECT * FROM pg_temp.result01a EXCEPT SELECT * FROM pg_temp.result01b; + hkey | a | b | aid | alabel +------+---+---+-----+-------- +(0 rows) + +SELECT * FROM pg_temp.result02a EXCEPT SELECT * FROM pg_temp.result02b; + hkey | a | b | aid | alabel | bid | blabel +------+---+---+-----+--------+-----+-------- +(0 rows) + +SET enable_partitionwise_join = on; +-- Check reparameterization code when an optimizer have to make two level relids +-- adjustment. +SET enable_hashjoin = 'off'; +SET enable_mergejoin = 'off'; +SET enable_material = 'off'; +CREATE TABLE big AS SELECT x AS x FROM generate_series(1,1E4) x; +CREATE INDEX ON big(x); +CREATE TABLE small AS SELECT x, -x AS y FROM generate_series(1,100) x; +CREATE TABLE part_l0 (x int, y int, z int) PARTITION BY HASH (y); +CREATE TABLE part0_l1 PARTITION OF part_l0 (y) + FOR VALUES WITH (modulus 2, remainder 0) PARTITION BY HASH (z); +CREATE TABLE part0_l2 PARTITION OF part0_l1 (z) + FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE part1_l2 PARTITION OF part0_l1 (z) + FOR VALUES WITH (modulus 2, remainder 1); +CREATE TABLE part1_l1 PARTITION OF part_l0 (y) + FOR VALUES WITH (modulus 2, remainder 1); +INSERT INTO part_l0 (x, y, z) (SELECT x,x,x FROM generate_series(1,1E4) x); +ANALYZE big,small,part_l0; +-- Parameter have to be reparameterized by a plane relation. +EXPLAIN (COSTS OFF) +SELECT small.* FROM small + JOIN part_l0 ON small.y = part_l0.y AND small.y + part_l0.y < 10 + LEFT JOIN big ON big.x = small.x; + QUERY PLAN +----------------------------------------------------------------------------------------- + Nested Loop Left Join + -> Append + -> Nested Loop + Join Filter: ((small.y = part_l0_1.y) AND ((small.y + part_l0_1.y) < 10)) + -> Seq Scan on small + -> Seq Scan on part0_l2 part_l0_1 + -> Nested Loop + Join Filter: ((small.y = part_l0_2.y) AND ((small.y + part_l0_2.y) < 10)) + -> Seq Scan on part1_l2 part_l0_2 + -> Seq Scan on small + -> Nested Loop + Join Filter: ((small.y = part_l0_3.y) AND ((small.y + part_l0_3.y) < 10)) + -> Seq Scan on small + -> Seq Scan on part1_l1 part_l0_3 + -> Index Only Scan using big_x_idx on big + Index Cond: (x = (small.x)::numeric) +(16 rows) + +SELECT small.* FROM small + JOIN part_l0 ON small.y = part_l0.y AND small.y + part_l0.y < 10 + LEFT JOIN big ON big.x = small.x; + x | y +---+--- +(0 rows) + +-- Parameters have to be reparameterized by plane and partitioned relations. +EXPLAIN (COSTS OFF) +SELECT count(*) FROM small + JOIN part_l0 ON small.y = part_l0.y AND small.y + part_l0.y < 10 + LEFT JOIN big ON big.x = small.x OR big.x = part_l0.x; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Aggregate + -> Nested Loop Left Join + -> Append + -> Nested Loop + Join Filter: ((small.y = part_l0_1.y) AND ((small.y + part_l0_1.y) < 10)) + -> Seq Scan on small + -> Seq Scan on part0_l2 part_l0_1 + -> Nested Loop + Join Filter: ((small.y = part_l0_2.y) AND ((small.y + part_l0_2.y) < 10)) + -> Seq Scan on part1_l2 part_l0_2 + -> Seq Scan on small + -> Nested Loop + Join Filter: ((small.y = part_l0_3.y) AND ((small.y + part_l0_3.y) < 10)) + -> Seq Scan on small + -> Seq Scan on part1_l1 part_l0_3 + -> Bitmap Heap Scan on big + Recheck Cond: ((x = (small.x)::numeric) OR (x = (part_l0.x)::numeric)) + -> BitmapOr + -> Bitmap Index Scan on big_x_idx + Index Cond: (x = (small.x)::numeric) + -> Bitmap Index Scan on big_x_idx + Index Cond: (x = (part_l0.x)::numeric) +(22 rows) + +SELECT count(*) FROM small + JOIN part_l0 ON small.y = part_l0.y AND small.y + part_l0.y < 10 + LEFT JOIN big ON big.x = small.x OR big.x = part_l0.x; + count +------- + 0 +(1 row) + +DROP TABLE IF EXISTS big,small,part_l0 CASCADE; +RESET enable_hashjoin; +RESET enable_mergejoin; +RESET enable_material; +RESET max_parallel_workers_per_gather; +-- Parameterized path examples. +CREATE TABLE prta (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prta1 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prta2 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prta1 (id); +CREATE UNIQUE INDEX ON prta2 (id); +INSERT INTO prta (id, payload) + (SELECT *, ('abc' || id)::text AS payload + FROM generate_series(1,1) AS id); +CREATE TABLE prtb (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prtb1 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prtb2 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prtb1 (id); +CREATE UNIQUE INDEX ON prtb2 (id); +INSERT INTO prtb (id, payload) + (SELECT *, ('def' || id)::text AS payload + FROM generate_series(1,1000) AS id); +CREATE TABLE e (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE e1 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE e2 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 1); +INSERT INTO e (id, payload) + (SELECT *, ('ghi' || id)::text AS payload + FROM generate_series(1,1000) AS id); +CREATE UNIQUE INDEX ON e1 (id); +CREATE UNIQUE INDEX ON e2 (id); +ANALYZE prta,prtb,e; +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb WHERE prta.id=prtb.id; + QUERY PLAN +----------------------------------------------------------- + Append + -> Nested Loop + -> Seq Scan on prta1 prta_1 + -> Index Scan using prtb1_id_idx on prtb1 prtb_1 + Index Cond: (id = prta_1.id) + -> Nested Loop + -> Seq Scan on prta2 prta_2 + -> Index Scan using prtb2_id_idx on prtb2 prtb_2 + Index Cond: (id = prta_2.id) +(9 rows) + +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb,e WHERE prta.id=prtb.id AND prta.id=e.id; + QUERY PLAN +----------------------------------------------------------------- + Append + -> Nested Loop + Join Filter: (prta_1.id = e_1.id) + -> Nested Loop + -> Seq Scan on prta1 prta_1 + -> Index Scan using prtb1_id_idx on prtb1 prtb_1 + Index Cond: (id = prta_1.id) + -> Index Scan using e1_id_idx on e1 e_1 + Index Cond: (id = prtb_1.id) + -> Nested Loop + Join Filter: (prta_2.id = e_2.id) + -> Nested Loop + -> Seq Scan on prta2 prta_2 + -> Index Scan using prtb2_id_idx on prtb2 prtb_2 + Index Cond: (id = prta_2.id) + -> Index Scan using e2_id_idx on e2 e_2 + Index Cond: (id = prtb_2.id) +(17 rows) + -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; diff --git a/src/test/regress/sql/partition_join.sql b/src/test/regress/sql/partition_join.sql index d97b5b69ff..4d1dd5bec1 100644 --- a/src/test/regress/sql/partition_join.sql +++ b/src/test/regress/sql/partition_join.sql @@ -536,6 +536,186 @@ EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; +-- +-- For asymmetric partition-wise join +-- +CREATE TABLE prt5 (hkey int, a int, b int) PARTITION BY HASH(hkey); +CREATE TABLE prt5_p0 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 0); +CREATE TABLE prt5_p1 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 1); +CREATE TABLE prt5_p2 PARTITION OF prt5 + FOR VALUES WITH (modulus 3, remainder 2); +CREATE TABLE prt6 (aid int, alabel text) PARTITION BY HASH(aid); +CREATE TABLE prt6_p0 PARTITION OF prt6 + FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prt6_p1 PARTITION OF prt6 + FOR VALUES WITH (modulus 2, remainder 1); +CREATE TABLE t5_1 (aid int, alabel text); +CREATE TABLE t5_2 (bid int, blabel text); + +INSERT INTO prt5 (SELECT x, (x % 1000)::int, + ((x+1) % 1000)::int + FROM generate_series(1,1000000) x); +INSERT INTO t5_1 (SELECT x, md5(x::text) FROM generate_series(-200, 1500) x); +INSERT INTO t5_2 (SELECT x, md5(x::text) FROM generate_series(-200, 1500) x); +INSERT INTO prt6 (SELECT * FROM t5_1); + +VACUUM ANALYZE prt5,prt6,t5_1,t5_2; + +SET max_parallel_workers_per_gather = 0; + +-- Trivial asymmetric JOIN of partitioned table with a relation +EXPLAIN (COSTS OFF) +SELECT * + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +-- The same, but appended with UNION ALL +EXPLAIN (COSTS OFF) +SELECT * FROM ( + (SELECT * FROM prt5_p0) + UNION ALL + (SELECT * FROM prt5_p1) + UNION ALL + (SELECT * FROM prt5_p2) + ) AS sq1 +JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +-- Don't allow asymmetric JOIN of two partitioned tables. +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt5 JOIN prt6 ON a = aid AND alabel like '%abc%'; +SELECT count(*) FROM prt5 JOIN prt6 ON a = aid AND alabel like '%abc%'; + +-- Check asymmetric JOIN with Subquery +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt5 JOIN ( + SELECT * FROM prt6 LIMIT 1000 +) AS sq1 ON a = aid AND alabel like '%abc%'; +SELECT count(*) FROM prt5 JOIN (SELECT * FROM prt6 LIMIT 1000) AS sq1 + ON a = aid AND alabel like '%abc%'; + +-- Asymmetric JOIN of two plane tables and one partitioned +EXPLAIN (COSTS OFF) +SELECT count(*) + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; +SELECT count(*) + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + +-- unable to extract non-partitioned right relation +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 RIGHT JOIN t5_1 ON a = aid AND alabel like '%abc%'; +-- left side can be extracted, but no cost benefit +EXPLAIN (COSTS OFF) +SELECT * FROM prt5 LEFT JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +-- validation of the results with/without asymmetric partition-wise join +SELECT * INTO pg_temp.result01a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +SELECT * INTO pg_temp.result02a + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + +SET enable_partitionwise_join = off; + +SELECT * INTO pg_temp.result01b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%abc%'; + +SELECT * INTO pg_temp.result02b + FROM prt5 JOIN t5_1 ON a = aid AND alabel like '%ab%' + JOIN t5_2 ON b = bid AND blabel like '%cd%'; + +SELECT * FROM pg_temp.result01a EXCEPT SELECT * FROM pg_temp.result01b; +SELECT * FROM pg_temp.result02a EXCEPT SELECT * FROM pg_temp.result02b; + +SET enable_partitionwise_join = on; + +-- Check reparameterization code when an optimizer have to make two level relids +-- adjustment. + +SET enable_hashjoin = 'off'; +SET enable_mergejoin = 'off'; +SET enable_material = 'off'; + +CREATE TABLE big AS SELECT x AS x FROM generate_series(1,1E4) x; +CREATE INDEX ON big(x); +CREATE TABLE small AS SELECT x, -x AS y FROM generate_series(1,100) x; + +CREATE TABLE part_l0 (x int, y int, z int) PARTITION BY HASH (y); +CREATE TABLE part0_l1 PARTITION OF part_l0 (y) + FOR VALUES WITH (modulus 2, remainder 0) PARTITION BY HASH (z); +CREATE TABLE part0_l2 PARTITION OF part0_l1 (z) + FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE part1_l2 PARTITION OF part0_l1 (z) + FOR VALUES WITH (modulus 2, remainder 1); +CREATE TABLE part1_l1 PARTITION OF part_l0 (y) + FOR VALUES WITH (modulus 2, remainder 1); +INSERT INTO part_l0 (x, y, z) (SELECT x,x,x FROM generate_series(1,1E4) x); + +ANALYZE big,small,part_l0; + +-- Parameter have to be reparameterized by a plane relation. +EXPLAIN (COSTS OFF) +SELECT small.* FROM small + JOIN part_l0 ON small.y = part_l0.y AND small.y + part_l0.y < 10 + LEFT JOIN big ON big.x = small.x; +SELECT small.* FROM small + JOIN part_l0 ON small.y = part_l0.y AND small.y + part_l0.y < 10 + LEFT JOIN big ON big.x = small.x; + +-- Parameters have to be reparameterized by plane and partitioned relations. +EXPLAIN (COSTS OFF) +SELECT count(*) FROM small + JOIN part_l0 ON small.y = part_l0.y AND small.y + part_l0.y < 10 + LEFT JOIN big ON big.x = small.x OR big.x = part_l0.x; +SELECT count(*) FROM small + JOIN part_l0 ON small.y = part_l0.y AND small.y + part_l0.y < 10 + LEFT JOIN big ON big.x = small.x OR big.x = part_l0.x; + +DROP TABLE IF EXISTS big,small,part_l0 CASCADE; +RESET enable_hashjoin; +RESET enable_mergejoin; +RESET enable_material; +RESET max_parallel_workers_per_gather; + +-- Parameterized path examples. +CREATE TABLE prta (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prta1 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prta2 PARTITION OF prta FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prta1 (id); +CREATE UNIQUE INDEX ON prta2 (id); +INSERT INTO prta (id, payload) + (SELECT *, ('abc' || id)::text AS payload + FROM generate_series(1,1) AS id); + +CREATE TABLE prtb (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE prtb1 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE prtb2 PARTITION OF prtb FOR VALUES WITH (modulus 2, remainder 1); +CREATE UNIQUE INDEX ON prtb1 (id); +CREATE UNIQUE INDEX ON prtb2 (id); +INSERT INTO prtb (id, payload) + (SELECT *, ('def' || id)::text AS payload + FROM generate_series(1,1000) AS id); + +CREATE TABLE e (id integer, payload text) PARTITION BY HASH (id); +CREATE TABLE e1 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 0); +CREATE TABLE e2 PARTITION OF e FOR VALUES WITH (modulus 2, remainder 1); +INSERT INTO e (id, payload) + (SELECT *, ('ghi' || id)::text AS payload + FROM generate_series(1,1000) AS id); +CREATE UNIQUE INDEX ON e1 (id); +CREATE UNIQUE INDEX ON e2 (id); + +ANALYZE prta,prtb,e; + +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb WHERE prta.id=prtb.id; + +EXPLAIN (COSTS OFF) +SELECT * FROM prta,prtb,e WHERE prta.id=prtb.id AND prta.id=e.id; + -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; -- 2.33.0 --------------9DCA5E9A07F91111D4169DAB-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH] Do not check the REPLICATION attribute when running REPACK. @ 2026-04-20 07:20 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 329+ messages in thread From: Antonin Houska @ 2026-04-20 07:20 UTC (permalink / raw) Although REPACK (CONCURRENTLY) uses replication slots, there is no concern that the slot will leak data of other users because the MAINTAIN privilege on the table is required anyway. The REPLICATION attribute is also not needed to prevent REPACK from stealing slots from logical replication, since commit e76d8c749c introduces a limit on the maximum number of slots used by REPACK. --- src/backend/commands/repack_worker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index b17edd771e2..e4a4860805b 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -214,7 +214,6 @@ repack_setup_logical_decoding(Oid relid) /* * Make sure we can use logical decoding. */ - CheckSlotPermissions(); CheckLogicalDecodingRequirements(true); /* -- 2.47.3 --=-=-=-- ^ permalink raw reply [nested|flat] 329+ messages in thread
* [PATCH v8a 03/14] ci: Remove support for cirrus-ci based CI @ 2026-05-28 17:31 Andres Freund <andres@anarazel.de> 0 siblings, 0 replies; 329+ messages in thread From: Andres Freund @ 2026-05-28 17:31 UTC (permalink / raw) As mentioned in the earlier commit, cirrus-ci has shut down. Therefore remove all files related to running CI via cirrus. Also update comments / code that were referencing cirrus-ci. Discussion: https://postgr.es/m/3ydjipcr7kbss57nvi67noplncqhesl5eyb6wgol4ccjxynspv%40yatlykpribmm --- src/bin/pg_combinebackup/t/010_hardlink.pl | 12 +- .cirrus.yml | 91 -- src/test/perl/PostgreSQL/Test/Cluster.pm | 5 +- .cirrus.star | 143 --- .cirrus.tasks.yml | 1022 -------------------- src/tools/ci/ci_macports_packages.sh | 6 +- src/tools/ci/gcp_ram_disk.sh | 27 - 7 files changed, 11 insertions(+), 1295 deletions(-) delete mode 100644 .cirrus.yml delete mode 100644 .cirrus.star delete mode 100644 .cirrus.tasks.yml delete mode 100755 src/tools/ci/gcp_ram_disk.sh diff --git a/src/bin/pg_combinebackup/t/010_hardlink.pl b/src/bin/pg_combinebackup/t/010_hardlink.pl index b6e8a9128af..5fbbe6a923b 100644 --- a/src/bin/pg_combinebackup/t/010_hardlink.pl +++ b/src/bin/pg_combinebackup/t/010_hardlink.pl @@ -18,13 +18,13 @@ $primary->append_conf('postgresql.conf', 'autovacuum = off'); $primary->start; # Create a couple of tables (~264KB each). -# Note: Cirrus CI runs some tests with a very small segment size, so, in that +# Note: CI runs some tests with a very small segment size, so, in that # environment, a single table of 264KB would have both a segment with a link -# count of 1 and also one with a link count of 2. But in a normal installation, -# segment size is 1GB. Therefore, we use 2 different tables here: for test_1, -# all segments (or the only one) will have two hard links; for test_2, the -# last segment (or the only one) will have 1 hard link, and any others will -# have 2. +# count of 1 and also one with a link count of 2. But in a normal +# installation, segment size is 1GB. Therefore, we use 2 different tables +# here: for test_1, all segments (or the only one) will have two hard links; +# for test_2, the last segment (or the only one) will have 1 hard link, and +# any others will have 2. my $query = <<'EOM'; CREATE TABLE test_%s AS SELECT x.id::bigint, diff --git a/.cirrus.yml b/.cirrus.yml deleted file mode 100644 index 3f75852e84e..00000000000 --- a/.cirrus.yml +++ /dev/null @@ -1,91 +0,0 @@ -# CI configuration file for CI utilizing cirrus-ci.org -# -# For instructions on how to enable the CI integration in a repository and -# further details, see src/tools/ci/README -# -# -# The actual CI tasks are defined in .cirrus.tasks.yml. To make the compute -# resources for CI configurable on a repository level, the "final" CI -# configuration is the combination of: -# -# 1) the contents of this file -# -# 2) computed environment variables -# -# Used to enable/disable tasks based on the execution environment. See -# .cirrus.star: compute_environment_vars() -# -# 3) if defined, the contents of the file referenced by the, repository -# level, REPO_CI_CONFIG_GIT_URL variable (see -# https://cirrus-ci.org/guide/programming-tasks/#fs for the accepted -# format) -# -# This allows running tasks in a different execution environment than the -# default, e.g. to have sufficient resources for cfbot. -# -# 4) .cirrus.tasks.yml -# -# This composition is done by .cirrus.star - - -env: - # Source of images / containers - GCP_PROJECT: pg-ci-images - IMAGE_PROJECT: $GCP_PROJECT - CONTAINER_REPO: us-docker.pkg.dev/${GCP_PROJECT}/ci - DISK_SIZE: 25 - - -# Define how to run various types of tasks. - -# VMs provided by cirrus-ci. Each user has a limited number of "free" credits -# for testing. -cirrus_community_vm_template: &cirrus_community_vm_template - compute_engine_instance: - image_project: $IMAGE_PROJECT - image: family/$IMAGE_FAMILY - platform: $PLATFORM - cpu: $CPUS - disk: $DISK_SIZE - - -default_linux_task_template: &linux_task_template - env: - PLATFORM: linux - <<: *cirrus_community_vm_template - - -default_freebsd_task_template: &freebsd_task_template - env: - PLATFORM: freebsd - <<: *cirrus_community_vm_template - -default_netbsd_task_template: &netbsd_task_template - env: - PLATFORM: netbsd - <<: *cirrus_community_vm_template - -default_openbsd_task_template: &openbsd_task_template - env: - PLATFORM: openbsd - <<: *cirrus_community_vm_template - - -default_windows_task_template: &windows_task_template - env: - PLATFORM: windows - <<: *cirrus_community_vm_template - - -# macos workers provided by cirrus-ci -default_macos_task_template: &macos_task_template - env: - PLATFORM: macos - macos_instance: - image: $IMAGE - - -# Contents of REPO_CI_CONFIG_GIT_URL, if defined, will be inserted here, -# followed by the contents .cirrus.tasks.yml. This allows -# REPO_CI_CONFIG_GIT_URL to override how the task types above will be -# executed, e.g. using a custom compute account or permanent workers. diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm index 4fcb1f6be56..529f49efee1 100644 --- a/src/test/perl/PostgreSQL/Test/Cluster.pm +++ b/src/test/perl/PostgreSQL/Test/Cluster.pm @@ -363,9 +363,8 @@ This tries to connect to the server, to test whether it works or not,, so the server is up and running. Otherwise this can return 0 even if there's nothing wrong with raw_connect() itself. -Notably, raw_connect() does not work on Unix domain sockets on -Strawberry perl 5.26.3.1 on Windows, which we use in Cirrus CI images -as of this writing. It dies with "not implemented on this +Notably, raw_connect() does not work on Unix domain sockets on at least +Strawberry perl 5.26.3.1 on Windows. It dies with "not implemented on this architecture". =cut diff --git a/.cirrus.star b/.cirrus.star deleted file mode 100644 index e9bb672b959..00000000000 --- a/.cirrus.star +++ /dev/null @@ -1,143 +0,0 @@ -"""Additional CI configuration, using the starlark language. See -https://cirrus-ci.org/guide/programming-tasks/#introduction-into-starlark - -See also the starlark specification at -https://github.com/bazelbuild/starlark/blob/master/spec.md - -See also .cirrus.yml and src/tools/ci/README -""" - -load("cirrus", "env", "fs", "re", "yaml") - - -def main(): - """The main function is executed by cirrus-ci after loading .cirrus.yml and can - extend the CI definition further. - - As documented in .cirrus.yml, the final CI configuration is composed of - - 1) the contents of .cirrus.yml - - 2) computed environment variables - - 3) if defined, the contents of the file referenced by the, repository - level, REPO_CI_CONFIG_GIT_URL variable (see - https://cirrus-ci.org/guide/programming-tasks/#fs for the accepted - format) - - 4) .cirrus.tasks.yml - """ - - output = "" - - # 1) is evaluated implicitly - - - # Add 2) - additional_env = compute_environment_vars() - env_fmt = """ -### -# Computed environment variables start here -### -{0} -### -# Computed environment variables end here -### -""" - output += env_fmt.format(yaml.dumps({'env': additional_env})) - - - # Add 3) - repo_config_url = env.get("REPO_CI_CONFIG_GIT_URL") - if repo_config_url != None: - print("loading additional configuration from \"{}\"".format(repo_config_url)) - output += config_from(repo_config_url) - else: - output += "\n# REPO_CI_CONFIG_URL was not set\n" - - - # Add 4) - output += config_from(".cirrus.tasks.yml") - - - return output - - -def compute_environment_vars(): - cenv = {} - - ### - # Some tasks are manually triggered by default because they might use too - # many resources for users of free Cirrus credits, but they can be - # triggered automatically by naming them in an environment variable e.g. - # REPO_CI_AUTOMATIC_TRIGGER_TASKS="task_name other_task" under "Repository - # Settings" on Cirrus CI's website. - - default_manual_trigger_tasks = ['mingw', 'netbsd', 'openbsd'] - - repo_ci_automatic_trigger_tasks = env.get('REPO_CI_AUTOMATIC_TRIGGER_TASKS', '') - for task in default_manual_trigger_tasks: - name = 'CI_TRIGGER_TYPE_' + task.upper() - if repo_ci_automatic_trigger_tasks.find(task) != -1: - value = 'automatic' - else: - value = 'manual' - cenv[name] = value - ### - - ### - # Parse "ci-os-only:" tag in commit message and set - # CI_{$OS}_ENABLED variable for each OS - - # We want to disable SanityCheck if testing just a specific OS. This - # shortens push-wait-for-ci cycle time a bit when debugging operating - # system specific failures. Just treating it as an OS in that case - # suffices. - - operating_systems = [ - 'compilerwarnings', - 'freebsd', - 'linux', - 'macos', - 'mingw', - 'netbsd', - 'openbsd', - 'sanitycheck', - 'windows', - ] - commit_message = env.get('CIRRUS_CHANGE_MESSAGE') - match_re = r"(^|.*\n)ci-os-only: ([^\n]+)($|\n.*)" - - # re.match() returns an array with a tuple of (matched-string, match_1, ...) - m = re.match(match_re, commit_message) - if m and len(m) > 0: - os_only = m[0][2] - os_only_list = re.split(r'[, ]+', os_only) - else: - os_only_list = operating_systems - - for os in operating_systems: - os_enabled = os in os_only_list - cenv['CI_{0}_ENABLED'.format(os.upper())] = os_enabled - ### - - return cenv - - -def config_from(config_src): - """return contents of config file `config_src`, surrounded by markers - indicating start / end of the included file - """ - - config_contents = fs.read(config_src) - config_fmt = """ - -### -# contents of config file `{0}` start here -### -{1} -### -# contents of config file `{0}` end here -### -""" - return config_fmt.format(config_src, config_contents) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml deleted file mode 100644 index 8683d1ae9c7..00000000000 --- a/.cirrus.tasks.yml +++ /dev/null @@ -1,1022 +0,0 @@ -# CI configuration file for CI utilizing cirrus-ci.org -# -# For instructions on how to enable the CI integration in a repository and -# further details, see src/tools/ci/README -# -# -# NB: Different tasks intentionally test with different, non-default, -# configurations, to increase the chance of catching problems. Each task with -# non-obvious non-default documents their oddity at the top of the task, -# prefixed by "SPECIAL:". - - -env: - # The lower depth accelerates git clone. Use a bit of depth so that - # concurrent tasks and retrying older jobs have a chance of working. - CIRRUS_CLONE_DEPTH: 500 - # Useful to be able to analyse what in a script takes long - CIRRUS_LOG_TIMESTAMP: true - - CCACHE_MAXSIZE: "250M" - - # target to test, for all but windows - CHECK: check-world PROVE_FLAGS=$PROVE_FLAGS - CHECKFLAGS: -Otarget - PROVE_FLAGS: --timer - # Build test dependencies as part of the build step, to see compiler - # errors/warnings in one place. - MBUILD_TARGET: all testprep - MTEST_ARGS: --print-errorlogs --no-rebuild -C build - PGCTLTIMEOUT: 120 # avoids spurious failures during parallel tests - TEMP_CONFIG: ${CIRRUS_WORKING_DIR}/src/tools/ci/pg_ci_base.conf - PG_TEST_EXTRA: kerberos ldap ssl libpq_encryption load_balance oauth - - # Postgres config args for the meson builds, shared between all meson tasks - # except the 'SanityCheck' task - MESON_COMMON_PG_CONFIG_ARGS: -Dcassert=true -Dinjection_points=true - - # Meson feature flags shared by all meson tasks, except: - # SanityCheck: uses almost no dependencies. - # Windows - VS: has fewer dependencies than listed here, so defines its own. - # Linux: uses the 'auto' feature option to test meson feature autodetection. - MESON_COMMON_FEATURES: >- - -Dauto_features=disabled - -Dldap=enabled - -Dssl=openssl - -Dtap_tests=enabled - -Dplperl=enabled - -Dplpython=enabled - -Ddocs=enabled - -Dicu=enabled - -Dlibxml=enabled - -Dlibxslt=enabled - -Dlz4=enabled - -Dpltcl=enabled - -Dreadline=enabled - -Dzlib=enabled - -Dzstd=enabled - - -# What files to preserve in case tests fail -on_failure_ac: &on_failure_ac - log_artifacts: - paths: - - "**/*.log" - - "**/*.diffs" - - "**/regress_log_*" - type: text/plain - -on_failure_meson: &on_failure_meson - testrun_artifacts: - paths: - - "build*/testrun/**/*.log" - - "build*/testrun/**/*.diffs" - - "build*/testrun/**/regress_log_*" - type: text/plain - - # In theory it'd be nice to upload the junit files meson generates, so that - # cirrus will nicely annotate the commit. Unfortunately the files don't - # contain identifiable file + line numbers right now, so the annotations - # don't end up useful. We could probably improve on that with a some custom - # conversion script, but ... - meson_log_artifacts: - path: "build*/meson-logs/*.txt" - type: text/plain - - -# To avoid unnecessarily spinning up a lot of VMs / containers for entirely -# broken commits, have a minimal task that all others depend on. -# -# SPECIAL: -# - Builds with --auto-features=disabled and thus almost no enabled -# dependencies -task: - name: SanityCheck - - # If a specific OS is requested, don't run the sanity check. This shortens - # push-wait-for-ci cycle time a bit when debugging operating system specific - # failures. Uses skip instead of only_if, as cirrus otherwise warns about - # only_if conditions not matching. - skip: $CI_SANITYCHECK_ENABLED == false - - env: - CPUS: 4 - BUILD_JOBS: 8 - TEST_JOBS: 8 - IMAGE_FAMILY: pg-ci-trixie - CCACHE_DIR: ${CIRRUS_WORKING_DIR}/ccache_dir - # no options enabled, should be small - CCACHE_MAXSIZE: "150M" - - # While containers would start up a bit quicker, building is a bit - # slower. This way we don't have to maintain a container image. - <<: *linux_task_template - - ccache_cache: - folder: $CCACHE_DIR - - create_user_script: | - useradd -m postgres - chown -R postgres:postgres . - mkdir -p ${CCACHE_DIR} - chown -R postgres:postgres ${CCACHE_DIR} - echo '* - memlock 134217728' > /etc/security/limits.d/postgres.conf - su postgres -c "ulimit -l -H && ulimit -l -S" - # Can't change container's kernel.core_pattern. Postgres user can't write - # to / normally. Change that. - chown root:postgres / - chmod g+rwx / - - configure_script: | - su postgres <<-EOF - set -e - meson setup \ - --buildtype=debug \ - --auto-features=disabled \ - -Ddefault_library=shared \ - -Dtap_tests=enabled \ - build - EOF - build_script: | - su postgres <<-EOF - set -e - ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET} - EOF - upload_caches: ccache - - # Run a minimal set of tests. The main regression tests take too long for - # this purpose. For now this is a random quick pg_regress style test, and a - # tap test that exercises both a frontend binary and the backend. - test_minimal_script: | - su postgres <<-EOF - set -e - ulimit -c unlimited - meson test $MTEST_ARGS --suite setup - meson test $MTEST_ARGS --num-processes ${TEST_JOBS} \ - cube/regress pg_ctl/001_start_stop - EOF - - on_failure: - <<: *on_failure_meson - cores_script: | - mkdir -m 770 /tmp/cores - find / -maxdepth 1 -type f -name 'core*' -exec mv '{}' /tmp/cores/ \; - src/tools/ci/cores_backtrace.sh linux /tmp/cores - - -# SPECIAL: -# - Uses postgres specific CPPFLAGS that increase test coverage -# - Specifies configuration options that test reading/writing/copying of node trees -# - Specifies debug_parallel_query=regress, to catch related issues during CI -# - Also runs tests against a running postgres instance, see test_running_script -task: - name: FreeBSD - Meson - - env: - CPUS: 4 - BUILD_JOBS: 4 - TEST_JOBS: 8 - IMAGE_FAMILY: pg-ci-freebsd - DISK_SIZE: 50 - - CCACHE_DIR: /tmp/ccache_dir - CPPFLAGS: -DRELCACHE_FORCE_RELEASE -DENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS - CFLAGS: -Og -ggdb - - # Several buildfarm animals enable these options. Without testing them - # during CI, it would be easy to cause breakage on the buildfarm with CI - # passing. - PG_TEST_INITDB_EXTRA_OPTS: >- - -c debug_copy_parse_plan_trees=on - -c debug_write_read_parse_plan_trees=on - -c debug_raw_expression_coverage_test=on - -c debug_parallel_query=regress - PG_TEST_PG_UPGRADE_MODE: --link - - MESON_FEATURES: >- - -Ddtrace=enabled - -Dgssapi=enabled - -Dlibcurl=enabled - -Dnls=enabled - -Dpam=enabled - -Dtcl_version=tcl86 - -Duuid=bsd - - <<: *freebsd_task_template - - depends_on: SanityCheck - only_if: $CI_FREEBSD_ENABLED - - sysinfo_script: | - id - uname -a - ulimit -a -H && ulimit -a -S - export - - ccache_cache: - folder: $CCACHE_DIR - setup_ram_disk_script: src/tools/ci/gcp_ram_disk.sh - create_user_script: | - pw useradd postgres - chown -R postgres:postgres . - mkdir -p ${CCACHE_DIR} - chown -R postgres:postgres ${CCACHE_DIR} - setup_core_files_script: | - mkdir -m 770 /tmp/cores - chown root:postgres /tmp/cores - sysctl kern.corefile='/tmp/cores/%N.%P.core' - setup_additional_packages_script: | - #pkg install -y ... - - # NB: Intentionally build without -Dllvm. The freebsd image size is already - # large enough to make VM startup slow, and even without llvm freebsd - # already takes longer than other platforms except for windows. - configure_script: | - su postgres <<-EOF - set -e - meson setup \ - ${MESON_COMMON_PG_CONFIG_ARGS} \ - --buildtype=debug \ - -Dextra_lib_dirs=/usr/local/lib -Dextra_include_dirs=/usr/local/include/ \ - ${MESON_COMMON_FEATURES} ${MESON_FEATURES} \ - build - EOF - build_script: su postgres -c 'ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET}' - upload_caches: ccache - - test_world_script: | - su postgres <<-EOF - set -e - ulimit -c unlimited - meson test $MTEST_ARGS --num-processes ${TEST_JOBS} - EOF - - # test runningcheck, freebsd chosen because it's currently fast enough - test_running_script: | - su postgres <<-EOF - set -e - ulimit -c unlimited - meson test $MTEST_ARGS --quiet --suite setup - export LD_LIBRARY_PATH="$(pwd)/build/tmp_install/usr/local/pgsql/lib/:$LD_LIBRARY_PATH" - mkdir -p build/testrun - build/tmp_install/usr/local/pgsql/bin/initdb -N build/runningcheck --no-instructions -A trust - echo "include '$(pwd)/src/tools/ci/pg_ci_base.conf'" >> build/runningcheck/postgresql.conf - build/tmp_install/usr/local/pgsql/bin/pg_ctl -c -o '-c fsync=off' -D build/runningcheck -l build/testrun/runningcheck.log start - meson test $MTEST_ARGS --num-processes ${TEST_JOBS} --setup running - build/tmp_install/usr/local/pgsql/bin/pg_ctl -D build/runningcheck stop - EOF - - on_failure: - # if the server continues running, it often causes cirrus-ci to fail - # during upload, as it doesn't expect artifacts to change size - stop_running_script: | - su postgres <<-EOF - set -e - build/tmp_install/usr/local/pgsql/bin/pg_ctl -D build/runningcheck stop || true - EOF - <<: *on_failure_meson - cores_script: src/tools/ci/cores_backtrace.sh freebsd /tmp/cores - - -task: - depends_on: SanityCheck - - env: - # Below are experimentally derived to be a decent choice. - CPUS: 4 - BUILD_JOBS: 8 - TEST_JOBS: 8 - - # Default working directory is /tmp, but its total size (1.2 GB) is not - # enough, so different working and cache directory are set. - CIRRUS_WORKING_DIR: /home/postgres/postgres - CCACHE_DIR: /home/postgres/cache - - PATH: /usr/sbin:$PATH - CORE_DUMP_DIR: /var/crash - - matrix: - - name: NetBSD - Meson - # See REPO_CI_AUTOMATIC_TRIGGER_TASKS in .cirrus.star - trigger_type: $CI_TRIGGER_TYPE_NETBSD - only_if: $CI_NETBSD_ENABLED - env: - OS_NAME: netbsd - IMAGE_FAMILY: pg-ci-netbsd-postgres - PKGCONFIG_PATH: '/usr/lib/pkgconfig:/usr/pkg/lib/pkgconfig' - # initdb fails with: 'invalid locale settings' error on NetBSD. - # Force 'LANG' and 'LC_*' variables to be 'C'. - # See https://postgr.es/m/2490325.1734471752%40sss.pgh.pa.us - LANG: "C" - LC_ALL: "C" - # -Duuid is not set for the NetBSD, see the comment below, above - # configure_script, for more information. - MESON_FEATURES: >- - -Dgssapi=enabled - -Dlibcurl=enabled - -Dnls=enabled - -Dpam=enabled - - setup_additional_packages_script: | - #pkgin -y install ... - <<: *netbsd_task_template - - - name: OpenBSD - Meson - # See REPO_CI_AUTOMATIC_TRIGGER_TASKS in .cirrus.star - trigger_type: $CI_TRIGGER_TYPE_OPENBSD - only_if: $CI_OPENBSD_ENABLED - env: - OS_NAME: openbsd - IMAGE_FAMILY: pg-ci-openbsd-postgres - PKGCONFIG_PATH: '/usr/lib/pkgconfig:/usr/local/lib/pkgconfig' - CORE_DUMP_EXECUTABLE_DIR: $CIRRUS_WORKING_DIR/build/tmp_install/usr/local/pgsql/bin - - MESON_FEATURES: >- - -Dbsd_auth=enabled - -Dlibcurl=enabled - -Dtcl_version=tcl86 - -Duuid=e2fs - - setup_additional_packages_script: | - #pkg_add -I ... - # Always core dump to ${CORE_DUMP_DIR} - set_core_dump_script: sysctl -w kern.nosuidcoredump=2 - <<: *openbsd_task_template - - sysinfo_script: | - locale - id - uname -a - ulimit -a -H && ulimit -a -S - env - - ccache_cache: - folder: $CCACHE_DIR - setup_ram_disk_script: src/tools/ci/gcp_ram_disk.sh - create_user_script: | - useradd postgres - chown -R postgres:users /home/postgres - mkdir -p ${CCACHE_DIR} - chown -R postgres:users ${CCACHE_DIR} - setup_core_files_script: | - mkdir -p ${CORE_DUMP_DIR} - chmod -R 770 ${CORE_DUMP_DIR} - chown -R postgres:users ${CORE_DUMP_DIR} - - # -Duuid=bsd is not set since 'bsd' uuid option - # is not working on NetBSD & OpenBSD. See - # https://www.postgresql.org/message-id/17358-89806e7420797025@postgresql.org - # And other uuid options are not available on NetBSD. - configure_script: | - su postgres <<-EOF - set -e - meson setup \ - ${MESON_COMMON_PG_CONFIG_ARGS} \ - --buildtype=debugoptimized \ - --pkg-config-path ${PKGCONFIG_PATH} \ - ${MESON_COMMON_FEATURES} ${MESON_FEATURES} \ - build - EOF - - build_script: su postgres -c 'ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET}' - upload_caches: ccache - - test_world_script: | - su postgres <<-EOF - set -e - ulimit -c unlimited - meson test $MTEST_ARGS --num-processes ${TEST_JOBS} - EOF - - on_failure: - <<: *on_failure_meson - cores_script: | - # Although we try to configure the OS to core dump inside - # ${CORE_DUMP_DIR}, they may not obey this. So, move core files to the - # ${CORE_DUMP_DIR} directory. - find build/ -type f -name '*.core' -exec mv '{}' ${CORE_DUMP_DIR} \; - src/tools/ci/cores_backtrace.sh ${OS_NAME} ${CORE_DUMP_DIR} ${CORE_DUMP_EXECUTABLE_DIR} - - -# configure feature flags, shared between the task running the linux tests and -# the CompilerWarnings task -LINUX_CONFIGURE_FEATURES: &LINUX_CONFIGURE_FEATURES >- - --with-gssapi - --with-icu - --with-ldap - --with-libcurl - --with-libxml - --with-libxslt - --with-llvm - --with-lz4 - --with-pam - --with-perl - --with-python - --with-selinux - --with-ssl=openssl - --with-systemd - --with-tcl --with-tclconfig=/usr/lib/tcl8.6/ - --with-uuid=ossp - --with-zstd - - -# Check SPECIAL in the matrix: below -task: - env: - CPUS: 4 - BUILD_JOBS: 4 - TEST_JOBS: 8 # experimentally derived to be a decent choice - IMAGE_FAMILY: pg-ci-trixie - - CCACHE_DIR: /tmp/ccache_dir - DEBUGINFOD_URLS: "https://debuginfod.debian.net"; - - # Enable a reasonable set of sanitizers. Use the linux task for that, as - # it's one of the fastest tasks (without sanitizers). Also several of the - # sanitizers work best on linux. - # - # The overhead of alignment sanitizer is low, undefined behaviour has - # moderate overhead. Test alignment sanitizer in the meson task, as it - # does both 32 and 64 bit builds and is thus more likely to expose - # alignment bugs. - # - # Address sanitizer in contrast is somewhat expensive. Enable it in the - # autoconf task, as the meson task tests both 32 and 64bit. - # - # disable_coredump=0, abort_on_error=1: for useful backtraces in case of crashes - # print_stacktraces=1,verbosity=2, duh - # detect_leaks=0: too many uninteresting leak errors in short-lived binaries - UBSAN_OPTIONS: print_stacktrace=1:disable_coredump=0:abort_on_error=1:verbosity=2 - ASAN_OPTIONS: print_stacktrace=1:disable_coredump=0:abort_on_error=1:detect_leaks=0 - - # SANITIZER_FLAGS is set in the tasks below - CFLAGS: -Og -ggdb -fno-sanitize-recover=all $SANITIZER_FLAGS - CXXFLAGS: $CFLAGS - LDFLAGS: $SANITIZER_FLAGS - CC: ccache gcc - CXX: ccache g++ - - LINUX_CONFIGURE_FEATURES: *LINUX_CONFIGURE_FEATURES - LINUX_MESON_FEATURES: >- - -Duuid=e2fs - - <<: *linux_task_template - - depends_on: SanityCheck - only_if: $CI_LINUX_ENABLED - - ccache_cache: - folder: ${CCACHE_DIR} - - sysinfo_script: | - id - uname -a - cat /proc/cmdline - ulimit -a -H && ulimit -a -S - export - create_user_script: | - useradd -m postgres - chown -R postgres:postgres . - mkdir -p ${CCACHE_DIR} - chown -R postgres:postgres ${CCACHE_DIR} - echo '* - memlock 134217728' > /etc/security/limits.d/postgres.conf - su postgres -c "ulimit -l -H && ulimit -l -S" - setup_core_files_script: | - mkdir -m 770 /tmp/cores - chown root:postgres /tmp/cores - sysctl kernel.core_pattern='/tmp/cores/%e-%s-%p.core' - - setup_hosts_file_script: | - cat >> /etc/hosts <<-EOF - 127.0.0.1 pg-loadbalancetest - 127.0.0.2 pg-loadbalancetest - 127.0.0.3 pg-loadbalancetest - EOF - - setup_additional_packages_script: | - #apt-get update - #DEBIAN_FRONTEND=noninteractive apt-get -y install ... - - matrix: - # SPECIAL: - # - Uses address sanitizer, sanitizer failures are typically printed in - # the server log - # - Configures postgres with a small segment size - - name: Linux - Debian Trixie - Autoconf - - env: - SANITIZER_FLAGS: -fsanitize=address - PG_TEST_PG_COMBINEBACKUP_MODE: --copy-file-range - - # Normally, the "relation segment" code basically has no coverage in our - # tests, because we (quite reasonably) don't generate tables large - # enough in tests. We've had plenty bugs that we didn't notice due the - # code not being exercised much. Thus specify a very small segment size - # here. Use a non-power-of-two segment size, given we currently allow - # that. - configure_script: | - su postgres <<-EOF - set -e - ./configure \ - --enable-cassert --enable-injection-points --enable-debug \ - --enable-tap-tests --enable-nls \ - --with-segsize-blocks=6 \ - --with-libnuma \ - --with-liburing \ - \ - ${LINUX_CONFIGURE_FEATURES} \ - \ - CLANG="ccache clang" - EOF - build_script: su postgres -c "make -s -j${BUILD_JOBS} world-bin" - upload_caches: ccache - - test_world_script: | - su postgres <<-EOF - set -e - ulimit -c unlimited # default is 0 - make -s ${CHECK} ${CHECKFLAGS} -j${TEST_JOBS} - EOF - - on_failure: - <<: *on_failure_ac - - # SPECIAL: - # - Uses undefined behaviour and alignment sanitizers, sanitizer failures - # are typically printed in the server log - # - Test both 64bit and 32 bit builds - # - uses io_method=io_uring - # - Uses meson feature autodetection - - name: Linux - Debian Trixie - Meson - - env: - CCACHE_MAXSIZE: "400M" # tests two different builds - SANITIZER_FLAGS: -fsanitize=alignment,undefined - PG_TEST_INITDB_EXTRA_OPTS: >- - -c io_method=io_uring - - configure_script: | - su postgres <<-EOF - set -e - meson setup \ - ${MESON_COMMON_PG_CONFIG_ARGS} \ - --buildtype=debug \ - ${LINUX_MESON_FEATURES} -Dllvm=enabled \ - build - EOF - - # Also build & test in a 32bit build - it's gotten rare to test that - # locally. - configure_32_script: | - su postgres <<-EOF - set -e - export CC='ccache gcc -m32' - export CXX='ccache g++ -m32' - meson setup \ - ${MESON_COMMON_PG_CONFIG_ARGS} \ - --buildtype=debug \ - --pkg-config-path /usr/lib/i386-linux-gnu/pkgconfig/ \ - -DPERL=perl5.40-i386-linux-gnu \ - ${LINUX_MESON_FEATURES} -Dlibnuma=disabled \ - build-32 - EOF - - build_script: | - su postgres <<-EOF - set -e - ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET} - ninja -C build -t missingdeps - EOF - - build_32_script: | - su postgres <<-EOF - set -e - ninja -C build-32 -j${BUILD_JOBS} ${MBUILD_TARGET} - ninja -C build -t missingdeps - EOF - - upload_caches: ccache - - test_world_script: | - su postgres <<-EOF - set -e - ulimit -c unlimited - meson test $MTEST_ARGS --num-processes ${TEST_JOBS} - EOF - # so that we don't upload 64bit logs if 32bit fails - rm -rf build/ - - # There's currently no coverage of icu with LANG=C in the buildfarm. We - # can easily provide some here by running one of the sets of tests that - # way. Newer versions of python insist on changing the LC_CTYPE away - # from C, prevent that with PYTHONCOERCECLOCALE. - test_world_32_script: | - su postgres <<-EOF - set -e - ulimit -c unlimited - PYTHONCOERCECLOCALE=0 LANG=C meson test $MTEST_ARGS -C build-32 --num-processes ${TEST_JOBS} - EOF - - on_failure: - <<: *on_failure_meson - - on_failure: - cores_script: src/tools/ci/cores_backtrace.sh linux /tmp/cores - - -# NB: macOS is by far the most expensive OS to run CI for, therefore no -# expensive additional checks should be added. -# -# SPECIAL: -# - Enables --clone for pg_upgrade and pg_combinebackup -task: - name: macOS - Sequoia - Meson - - env: - CPUS: 4 # always get that much for cirrusci macOS instances - BUILD_JOBS: $CPUS - # Test performance regresses noticeably when using all cores. 8 seems to - # work OK. See - # https://postgr.es/m/20220927040208.l3shfcidovpzqxfh%40awork3.anarazel.de - TEST_JOBS: 8 - IMAGE: ghcr.io/cirruslabs/macos-runner:sequoia - - CIRRUS_WORKING_DIR: ${HOME}/pgsql/ - CCACHE_DIR: ${HOME}/ccache - MACPORTS_CACHE: ${HOME}/macports-cache - - MESON_FEATURES: >- - -Dbonjour=enabled - -Ddtrace=enabled - -Dgssapi=enabled - -Dlibcurl=enabled - -Dnls=enabled - -Duuid=e2fs - - MACOS_PACKAGE_LIST: >- - ccache - icu - kerberos5 - lz4 - meson - openldap - openssl - p5.34-io-tty - p5.34-ipc-run - python312 - tcl - zstd - - CC: ccache cc - CXX: ccache c++ - CFLAGS: -Og -ggdb - CXXFLAGS: -Og -ggdb - - PG_TEST_PG_UPGRADE_MODE: --clone - PG_TEST_PG_COMBINEBACKUP_MODE: --clone - - <<: *macos_task_template - - depends_on: SanityCheck - only_if: $CI_MACOS_ENABLED - - sysinfo_script: | - id - uname -a - ulimit -a -H && ulimit -a -S - export - - setup_core_files_script: - - mkdir ${HOME}/cores - - sudo sysctl kern.corefile="${HOME}/cores/core.%P" - - # Use macports, even though homebrew is installed. The installation - # of the additional packages we need would take quite a while with - # homebrew, even if we cache the downloads. We can't cache all of - # homebrew, because it's already large. So we use macports. To cache - # the installation we create a .dmg file that we mount if it already - # exists. - # XXX: The reason for the direct p5.34* references is that we'd need - # the large macport tree around to figure out that p5-io-tty is - # actually p5.34-io-tty. Using the unversioned name works, but - # updates macports every time. - macports_cache: - folder: ${MACPORTS_CACHE} - fingerprint_script: | - # Reinstall packages if the OS major version, the list of the packages - # to install or the MacPorts install script changes. - sw_vers -productVersion | sed 's/\..*//' - echo $MACOS_PACKAGE_LIST - md5 src/tools/ci/ci_macports_packages.sh - reupload_on_changes: true - setup_additional_packages_script: | - sh src/tools/ci/ci_macports_packages.sh $MACOS_PACKAGE_LIST - # system python doesn't provide headers - sudo /opt/local/bin/port select python3 python312 - # Make macports install visible for subsequent steps - echo PATH=/opt/local/sbin/:/opt/local/bin/:$PATH >> $CIRRUS_ENV - upload_caches: macports - - ccache_cache: - folder: $CCACHE_DIR - configure_script: | - export PKG_CONFIG_PATH="/opt/local/lib/pkgconfig/" - meson setup \ - ${MESON_COMMON_PG_CONFIG_ARGS} \ - --buildtype=debug \ - -Dextra_include_dirs=/opt/local/include \ - -Dextra_lib_dirs=/opt/local/lib \ - ${MESON_COMMON_FEATURES} ${MESON_FEATURES} \ - build - - build_script: ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET} - upload_caches: ccache - - test_world_script: | - ulimit -c unlimited # default is 0 - ulimit -n 1024 # default is 256, pretty low - meson test $MTEST_ARGS --num-processes ${TEST_JOBS} - - on_failure: - <<: *on_failure_meson - cores_script: src/tools/ci/cores_backtrace.sh macos "${HOME}/cores" - - -WINDOWS_ENVIRONMENT_BASE: &WINDOWS_ENVIRONMENT_BASE - env: - # Half the allowed per-user CPU cores - CPUS: 4 - - # The default cirrus working dir is in a directory msbuild complains about - CIRRUS_WORKING_DIR: "c:/cirrus" - # git's tar doesn't deal with drive letters, see - # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net - TAR: "c:/windows/system32/tar.exe" - # Avoids port conflicts between concurrent tap test runs - PG_TEST_USE_UNIX_SOCKETS: 1 - PG_REGRESS_SOCK_DIR: "c:/cirrus/" - DISK_SIZE: 50 - IMAGE_FAMILY: pg-ci-windows-ci - - sysinfo_script: | - chcp - systeminfo - powershell -Command get-psdrive -psprovider filesystem - set - - -task: - name: Windows - Server 2022, VS 2019 - Meson & ninja - << : *WINDOWS_ENVIRONMENT_BASE - - env: - TEST_JOBS: 8 # wild guess, data based value welcome - - # Cirrus defaults to SetErrorMode(SEM_NOGPFAULTERRORBOX | ...). That - # prevents crash reporting from working unless binaries do SetErrorMode() - # themselves. Furthermore, it appears that either python or, more likely, - # the C runtime has a bug where SEM_NOGPFAULTERRORBOX can very - # occasionally *trigger* a crash on process exit - which is hard to debug, - # given that it explicitly prevents crash dumps from working... - # 0x8001 is SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX - CIRRUS_WINDOWS_ERROR_MODE: 0x8001 - - MESON_FEATURES: - -Dcpp_args=/std:c++20 - -Dauto_features=disabled - -Dldap=enabled - -Dssl=openssl - -Dtap_tests=enabled - -Dplperl=enabled - -Dplpython=enabled - - <<: *windows_task_template - - depends_on: SanityCheck - only_if: $CI_WINDOWS_ENABLED - - setup_additional_packages_script: | - REM choco install -y --no-progress ... - - setup_hosts_file_script: | - echo 127.0.0.1 pg-loadbalancetest >> c:\Windows\System32\Drivers\etc\hosts - echo 127.0.0.2 pg-loadbalancetest >> c:\Windows\System32\Drivers\etc\hosts - echo 127.0.0.3 pg-loadbalancetest >> c:\Windows\System32\Drivers\etc\hosts - type c:\Windows\System32\Drivers\etc\hosts - - configure_script: | - vcvarsall x64 - meson setup --backend ninja %MESON_COMMON_PG_CONFIG_ARGS% --buildtype debug -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% %MESON_FEATURES% build - - build_script: | - vcvarsall x64 - ninja -C build %MBUILD_TARGET% - ninja -C build -t missingdeps - - check_world_script: | - vcvarsall x64 - meson test %MTEST_ARGS% --num-processes %TEST_JOBS% - - on_failure: - <<: *on_failure_meson - crashlog_artifacts: - path: "crashlog-*.txt" - type: text/plain - - -task: - << : *WINDOWS_ENVIRONMENT_BASE - name: Windows - Server 2022, MinGW64 - Meson - - # See REPO_CI_AUTOMATIC_TRIGGER_TASKS in .cirrus.star. - trigger_type: $CI_TRIGGER_TYPE_MINGW - - depends_on: SanityCheck - only_if: $CI_MINGW_ENABLED - - env: - TEST_JOBS: 4 # higher concurrency causes occasional failures - CCACHE_DIR: C:/msys64/ccache - CCACHE_MAXSIZE: "500M" - CCACHE_SLOPPINESS: pch_defines,time_macros - CCACHE_DEPEND: 1 - # for some reason mingw plpython cannot find its installation without this - PYTHONHOME: C:/msys64/ucrt64 - # prevents MSYS bash from resetting error mode - MSYS: winjitdebug - # Start bash in current working directory - CHERE_INVOKING: 1 - BASH: C:\msys64\usr\bin\bash.exe -l - - # Keep -Dnls explicitly disabled, as the number of files it creates causes a - # noticeable slowdown. - MESON_FEATURES: >- - -Dnls=disabled - - <<: *windows_task_template - - ccache_cache: - folder: ${CCACHE_DIR} - - setup_additional_packages_script: | - REM C:\msys64\usr\bin\pacman.exe -S --noconfirm ... - - mingw_info_script: | - %BASH% -c "where gcc" - %BASH% -c "gcc --version" - %BASH% -c "where perl" - %BASH% -c "perl --version" - - configure_script: | - %BASH% -c "meson setup %MESON_COMMON_PG_CONFIG_ARGS% -Ddebug=true -Doptimization=g -Db_pch=true %MESON_COMMON_FEATURES% %MESON_FEATURES% -DTAR=%TAR% build" - - build_script: | - %BASH% -c "ninja -C build ${MBUILD_TARGET}" - - upload_caches: ccache - - test_world_script: | - %BASH% -c "meson test %MTEST_ARGS% --num-processes %TEST_JOBS%" - - on_failure: - <<: *on_failure_meson - crashlog_artifacts: - path: "crashlog-*.txt" - type: text/plain - - -task: - name: CompilerWarnings - - # To limit unnecessary work only run this once the SanityCheck - # succeeds. This is particularly important for this task as we intentionally - # use always: to continue after failures. - depends_on: SanityCheck - only_if: $CI_COMPILERWARNINGS_ENABLED - - env: - CPUS: 4 - BUILD_JOBS: 4 - IMAGE_FAMILY: pg-ci-trixie - - # Use larger ccache cache, as this task compiles with multiple compilers / - # flag combinations - CCACHE_MAXSIZE: "1G" - CCACHE_DIR: "/tmp/ccache_dir" - - LINUX_CONFIGURE_FEATURES: *LINUX_CONFIGURE_FEATURES - - <<: *linux_task_template - - sysinfo_script: | - id - uname -a - cat /proc/cmdline - ulimit -a -H && ulimit -a -S - gcc -v - clang -v - export - - ccache_cache: - folder: $CCACHE_DIR - - setup_additional_packages_script: | - #apt-get update - #DEBIAN_FRONTEND=noninteractive apt-get -y install ... - - ### - # Test that code can be built with gcc/clang without warnings - ### - - setup_script: echo "COPT=-Werror" > src/Makefile.custom - - # Trace probes have a history of getting accidentally broken. Use the - # different compilers to build with different combinations of dtrace on/off - # and cassert on/off. - - # gcc, cassert off, dtrace on - always: - gcc_warning_script: | - time ./configure \ - --cache gcc.cache \ - --enable-dtrace \ - ${LINUX_CONFIGURE_FEATURES} \ - CC="ccache gcc" CXX="ccache g++" CLANG="ccache clang" - make -s -j${BUILD_JOBS} clean - time make -s -j${BUILD_JOBS} world-bin - - # gcc, cassert on, dtrace off - always: - gcc_a_warning_script: | - time ./configure \ - --cache gcc.cache \ - --enable-cassert \ - ${LINUX_CONFIGURE_FEATURES} \ - CC="ccache gcc" CXX="ccache g++" CLANG="ccache clang" - make -s -j${BUILD_JOBS} clean - time make -s -j${BUILD_JOBS} world-bin - - # clang, cassert off, dtrace off - always: - clang_warning_script: | - time ./configure \ - --cache clang.cache \ - ${LINUX_CONFIGURE_FEATURES} \ - CC="ccache clang" CXX="ccache clang++" CLANG="ccache clang" - make -s -j${BUILD_JOBS} clean - time make -s -j${BUILD_JOBS} world-bin - - # clang, cassert on, dtrace on - always: - clang_a_warning_script: | - time ./configure \ - --cache clang.cache \ - --enable-cassert \ - --enable-dtrace \ - ${LINUX_CONFIGURE_FEATURES} \ - CC="ccache clang" CXX="ccache clang++" CLANG="ccache clang" - make -s -j${BUILD_JOBS} clean - time make -s -j${BUILD_JOBS} world-bin - - # cross-compile to windows - always: - mingw_cross_warning_script: | - time ./configure \ - --host=x86_64-w64-mingw32ucrt \ - --enable-cassert \ - --without-icu \ - CC="ccache x86_64-w64-mingw32ucrt-gcc" \ - CXX="ccache x86_64-w64-mingw32ucrt-g++" - make -s -j${BUILD_JOBS} clean - time make -s -j${BUILD_JOBS} world-bin - - ### - # Verify docs can be built - ### - # XXX: Only do this if there have been changes in doc/ since last build - always: - docs_build_script: | - time ./configure \ - --cache gcc.cache \ - CC="ccache gcc" CXX="ccache g++" CLANG="ccache clang" - make -s -j${BUILD_JOBS} clean - time make -s -j${BUILD_JOBS} -C doc - - ### - # Verify headerscheck / cpluspluscheck succeed - # - # - Run both in same script to increase parallelism, use -k to get result of both - # - Use -fmax-errors, as particularly cpluspluscheck can be very verbose - ### - always: - headers_headerscheck_script: | - time ./configure \ - ${LINUX_CONFIGURE_FEATURES} \ - --cache gcc.cache \ - --quiet \ - CC="ccache gcc" CXX="ccache g++" CLANG="ccache clang" - make -s -j${BUILD_JOBS} clean - time make -s -j${BUILD_JOBS} -k ${CHECKFLAGS} headerscheck cpluspluscheck EXTRAFLAGS='-fmax-errors=10' - - always: - upload_caches: ccache diff --git a/src/tools/ci/ci_macports_packages.sh b/src/tools/ci/ci_macports_packages.sh index c7c4a1c0c60..304b9b43fd4 100755 --- a/src/tools/ci/ci_macports_packages.sh +++ b/src/tools/ci/ci_macports_packages.sh @@ -6,7 +6,7 @@ # when packages are installed or removed. Any package this script is # not instructed to install, will be removed again. # -# This currently expects to be run in a macos cirrus-ci environment. +# This currently expects to be run in a macos github actions environment. set -e # set -x @@ -38,8 +38,8 @@ fi cache_dmg="macports.hfs.dmg" -if [ "$CIRRUS_CI" != "true" ] && [ "$GITHUB_ACTIONS" != "true" ]; then - echo "expect to be called within cirrus-ci or github actions" 1>&2 +if [ "$GITHUB_ACTIONS" != "true" ]; then + echo "expect to be called within github actions" 1>&2 exit 1 fi diff --git a/src/tools/ci/gcp_ram_disk.sh b/src/tools/ci/gcp_ram_disk.sh deleted file mode 100755 index 18dbb2037f5..00000000000 --- a/src/tools/ci/gcp_ram_disk.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# Move working directory into a RAM disk for better performance. - -set -e -set -x - -mv $CIRRUS_WORKING_DIR $CIRRUS_WORKING_DIR.orig -mkdir $CIRRUS_WORKING_DIR - -case "`uname`" in - FreeBSD|NetBSD) - mount -t tmpfs tmpfs $CIRRUS_WORKING_DIR - ;; - OpenBSD) - umount /dev/sd0j # unused /usr/obj partition - printf "m j\n\n\nswap\nw\nq\n" | disklabel -E sd0 - swapon /dev/sd0j - # Remove the per-process data segment limit so that mount_mfs can allocate - # large memory filesystems. Without this, mount_mfs mmap() may fail with - # "Cannot allocate memory" if the requested size exceeds the current - # datasize limit. - ulimit -d unlimited - mount -t mfs -o rw,noatime,nodev,-s=10000000 swap $CIRRUS_WORKING_DIR - ;; -esac - -cp -a $CIRRUS_WORKING_DIR.orig/. $CIRRUS_WORKING_DIR/ -- 2.54.0.380.gc69baaf57b --vphnza2cz5zw5t4a Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v8a-0004-ci-Store-build-meson-logs-and-name-id-os-task.patch" ^ permalink raw reply [nested|flat] 329+ messages in thread
end of thread, other threads:[~2026-05-28 17:31 UTC | newest] Thread overview: 329+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2021-04-02 06:02 [PATCH] Asymmetric partitionwise join. Andrey Lepikhov <a.lepikhov@postgrespro.ru> 2021-04-02 06:02 [PATCH] Asymmetric partitionwise join. Andrey Lepikhov <a.lepikhov@postgrespro.ru> 2021-04-02 06:02 [PATCH] Asymmetric partitionwise join. Andrey Lepikhov <a.lepikhov@postgrespro.ru> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-04-20 07:20 [PATCH] Do not check the REPLICATION attribute when running REPACK. Antonin Houska <ah@cybertec.at> 2026-05-28 17:31 [PATCH v8a 03/14] ci: Remove support for cirrus-ci based CI Andres Freund <andres@anarazel.de>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox